From nobody Sun Feb 8 17:43:30 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 470BF15351A for ; Wed, 21 Aug 2024 15:48:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724255327; cv=none; b=cGq0hq1IQ5onUwQPXH435R4BoENq/ppPHmu0lcmxSwv9uIZL8XPARKkiRI+Rybx+JztHPazHSOo6z/CYz8TIlvLGQlkSWdQodH1iGInRGPDVArVFyy+ui0I+uVlzM8EnkR9d5UOOra3wj/Tz/CTJeSEp7EoSbfdrqXPXyX1sBbw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724255327; c=relaxed/simple; bh=R6OqrPboQJiBPG6d8rzIvuM4XVVf3Y1qoXELO+1nxFw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F/5BVfkHEx3V/JNAXU6Lt9dJrNVsolreeT4HH12c+a5Mm6gsOJZoWxaN9O0VOLl7ovjgLT1+M39yBbEqsu99eoevN662/XzXNlOockyVNvpdMtAUchrsbIskJnolz+pGckqkJ4n2j7PkycLs/0spWWHIt74sT041M5oWH8oyCA4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=GDxDUqcD; arc=none smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="GDxDUqcD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724255325; x=1755791325; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=R6OqrPboQJiBPG6d8rzIvuM4XVVf3Y1qoXELO+1nxFw=; b=GDxDUqcD6LSJKL72L3kXiKdE6lnpbIOe1/W1os/18lnFs6ZfoUmFU922 PoS3pa6z2GooqeR3muBjvsJ85uGRfz7yO9UK5gWREkdwjngJZH7Wsrmi9 aoOry7w04TQ0jwjYxoJXm3NqAsc2/6yd51CX17ft6pVH+UgonQs4oRvgE iRT+XiIQMIeCTXEDTc1ol6JnWFFxc2wkT8z8qKtrPdc8V8IyXS3yWbV1o RLkC65cElPa9+1hGaWC3GgCZCU4Hbty9NHPcOYGS0u/9cRnTxfzwHs4TP 9A+G/F5v4UpLwyKIP0n4Ki8ezZzMR44f/QroT1X8KBoc/+/ZuXoyJE4M6 g==; X-CSE-ConnectionGUID: KPeKWpT5QiKpQwWd8L5JUQ== X-CSE-MsgGUID: eCEVmebNSlqcQmHi4DcKdg== X-IronPort-AV: E=McAfee;i="6700,10204,11171"; a="26376278" X-IronPort-AV: E=Sophos;i="6.10,164,1719903600"; d="scan'208";a="26376278" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2024 08:48:44 -0700 X-CSE-ConnectionGUID: 7Z99zUlTS/OGfy+38nhX9A== X-CSE-MsgGUID: oMjiuJ+wQc+y7l+eIlalZg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,164,1719903600"; d="scan'208";a="66080304" Received: from black.fi.intel.com ([10.237.72.28]) by orviesa004.jf.intel.com with ESMTP; 21 Aug 2024 08:48:42 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 17D9F49F; Wed, 21 Aug 2024 18:48:41 +0300 (EEST) From: Andy Shevchenko To: Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: "Rafael J. Wysocki" , Zijun Hu , Andy Shevchenko Subject: [PATCH v1 2/5] driver core: Use kasprintf() instead of fixed buffer formatting Date: Wed, 21 Aug 2024 18:48:20 +0300 Message-ID: <20240821154839.604259-3-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.43.0.rc1.1336.g36b5255a03ac In-Reply-To: <20240821154839.604259-1-andriy.shevchenko@linux.intel.com> References: <20240821154839.604259-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Improve readability and maintainability by replacing a hardcoded string allocation and formatting by the use of the kasprintf() helper. Signed-off-by: Andy Shevchenko --- drivers/base/core.c | 70 +++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 6b9d3d255135..f5b5b6bcdf35 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -10,6 +10,7 @@ =20 #include #include +#include #include #include #include /* for dma_default_coherent */ @@ -563,24 +564,11 @@ static struct class devlink_class =3D { =20 static int devlink_add_symlinks(struct device *dev) { + char *buf_con __free(kfree) =3D NULL, *buf_sup __free(kfree) =3D NULL; int ret; - size_t len; struct device_link *link =3D to_devlink(dev); struct device *sup =3D link->supplier; struct device *con =3D link->consumer; - char *buf; - - len =3D max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)), - strlen(dev_bus_name(con)) + strlen(dev_name(con))); - len +=3D strlen(":"); - /* - * we kzalloc() memory for symlink name of both supplier and - * consumer, so explicitly take into account both prefix. - */ - len +=3D max(strlen("supplier:"), strlen("consumer:")) + 1; - buf =3D kzalloc(len, GFP_KERNEL); - if (!buf) - return -ENOMEM; =20 ret =3D sysfs_create_link(&link->link_dev.kobj, &sup->kobj, "supplier"); if (ret) @@ -590,58 +578,64 @@ static int devlink_add_symlinks(struct device *dev) if (ret) goto err_con; =20 - snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con)); - ret =3D sysfs_create_link(&sup->kobj, &link->link_dev.kobj, buf); + buf_con =3D kasprintf(GFP_KERNEL, "consumer:%s:%s", dev_bus_name(con), de= v_name(con)); + if (!buf_con) { + ret =3D -ENOMEM; + goto err_con_dev; + } + + ret =3D sysfs_create_link(&sup->kobj, &link->link_dev.kobj, buf_con); if (ret) goto err_con_dev; =20 - snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); - ret =3D sysfs_create_link(&con->kobj, &link->link_dev.kobj, buf); + buf_sup =3D kasprintf(GFP_KERNEL, "supplier:%s:%s", dev_bus_name(sup), de= v_name(sup)); + if (!buf_sup) { + ret =3D -ENOMEM; + goto err_sup_dev; + } + + ret =3D sysfs_create_link(&con->kobj, &link->link_dev.kobj, buf_sup); if (ret) goto err_sup_dev; =20 goto out; =20 err_sup_dev: - snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con)); - sysfs_remove_link(&sup->kobj, buf); + sysfs_remove_link(&sup->kobj, buf_con); err_con_dev: sysfs_remove_link(&link->link_dev.kobj, "consumer"); err_con: sysfs_remove_link(&link->link_dev.kobj, "supplier"); out: - kfree(buf); return ret; } =20 static void devlink_remove_symlinks(struct device *dev) { + char *buf_con __free(kfree) =3D NULL, *buf_sup __free(kfree) =3D NULL; struct device_link *link =3D to_devlink(dev); - size_t len; struct device *sup =3D link->supplier; struct device *con =3D link->consumer; - char *buf; =20 sysfs_remove_link(&link->link_dev.kobj, "consumer"); sysfs_remove_link(&link->link_dev.kobj, "supplier"); =20 - len =3D max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)), - strlen(dev_bus_name(con)) + strlen(dev_name(con))); - len +=3D strlen(":"); - len +=3D max(strlen("supplier:"), strlen("consumer:")) + 1; - buf =3D kzalloc(len, GFP_KERNEL); - if (!buf) { - WARN(1, "Unable to properly free device link symlinks!\n"); - return; + if (device_is_registered(con)) { + buf_sup =3D kasprintf(GFP_KERNEL, "supplier:%s:%s", dev_bus_name(sup), d= ev_name(sup)); + if (!buf_sup) + goto out; + sysfs_remove_link(&con->kobj, buf_sup); } =20 - if (device_is_registered(con)) { - snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup)); - sysfs_remove_link(&con->kobj, buf); - } - snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con)); - sysfs_remove_link(&sup->kobj, buf); - kfree(buf); + buf_con =3D kasprintf(GFP_KERNEL, "consumer:%s:%s", dev_bus_name(con), de= v_name(con)); + if (!buf_con) + goto out; + sysfs_remove_link(&sup->kobj, buf_con); + + return; + +out: + WARN(1, "Unable to properly free device link symlinks!\n"); } =20 static struct class_interface devlink_class_intf =3D { --=20 2.43.0.rc1.1336.g36b5255a03ac