* [PATCH] staging: greybus: Replace sprintf with sysfs_emit
@ 2026-07-15 17:28 Mohammad Davoudi
2026-07-15 21:31 ` Dan Carpenter
0 siblings, 1 reply; 2+ messages in thread
From: Mohammad Davoudi @ 2026-07-15 17:28 UTC (permalink / raw)
To: johan, elder, gregkh, rmfrfs
Cc: greybus-dev, linux-staging, linux-kernel, Mohammad Davoudi
Replace sprintf() with sysfs_emit() in sysfs show functions.
The sprintf() function is unaware of the PAGE_SIZE limit of the sysfs
buffer, which can potentially lead to buffer overruns. sysfs_emit()
is strictly designed for sysfs attributes and inherently protects
against buffer boundaries.
Signed-off-by: Mohammad Davoudi <MDavoudi2011@gmail.com>
---
drivers/staging/greybus/gbphy.c | 2 +-
drivers/staging/greybus/light.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/greybus/gbphy.c b/drivers/staging/greybus/gbphy.c
index bdb0f5164..bb9a5b538 100644
--- a/drivers/staging/greybus/gbphy.c
+++ b/drivers/staging/greybus/gbphy.c
@@ -31,7 +31,7 @@ static ssize_t protocol_id_show(struct device *dev,
{
struct gbphy_device *gbphy_dev = to_gbphy_dev(dev);
- return sprintf(buf, "0x%02x\n", gbphy_dev->cport_desc->protocol_id);
+ return sysfs_emit(buf, "0x%02x\n", gbphy_dev->cport_desc->protocol_id);
}
static DEVICE_ATTR_RO(protocol_id);
diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index cab02b5da..2689f9a75 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -173,7 +173,7 @@ static ssize_t fade_##__dir##_show(struct device *dev, \
struct led_classdev *cdev = dev_get_drvdata(dev); \
struct gb_channel *channel = get_channel_from_cdev(cdev); \
\
- return sprintf(buf, "%u\n", channel->fade_##__dir); \
+ return sysfs_emit(buf, "%u\n", channel->fade_##__dir); \
} \
\
static ssize_t fade_##__dir##_store(struct device *dev, \
@@ -220,7 +220,7 @@ static ssize_t color_show(struct device *dev, struct device_attribute *attr,
struct led_classdev *cdev = dev_get_drvdata(dev);
struct gb_channel *channel = get_channel_from_cdev(cdev);
- return sprintf(buf, "0x%08x\n", channel->color);
+ return sysfs_emit(buf, "0x%08x\n", channel->color);
}
static ssize_t color_store(struct device *dev, struct device_attribute *attr,
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] staging: greybus: Replace sprintf with sysfs_emit
2026-07-15 17:28 [PATCH] staging: greybus: Replace sprintf with sysfs_emit Mohammad Davoudi
@ 2026-07-15 21:31 ` Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2026-07-15 21:31 UTC (permalink / raw)
To: Mohammad Davoudi
Cc: johan, elder, gregkh, rmfrfs, greybus-dev, linux-staging,
linux-kernel
On Wed, Jul 15, 2026 at 05:28:58PM +0000, Mohammad Davoudi wrote:
> Replace sprintf() with sysfs_emit() in sysfs show functions.
> The sprintf() function is unaware of the PAGE_SIZE limit of the sysfs
> buffer, which can potentially lead to buffer overruns. sysfs_emit()
> is strictly designed for sysfs attributes and inherently protects
> against buffer boundaries.
>
> Signed-off-by: Mohammad Davoudi <MDavoudi2011@gmail.com>
We're not applying this kind of patch in cases where sprintf is fine.
Really, I never like commit messages which talk about "potential
buffer overruns". Is it a buffer overrun or not? If it's really
hard to figure out then say that "This code is really hard to figure
out and I suspect its fine but let's be safe."
In this case the code is really simple and we can all see the original
code is fine just from reading the diff...
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-15 21:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-15 17:28 [PATCH] staging: greybus: Replace sprintf with sysfs_emit Mohammad Davoudi
2026-07-15 21:31 ` Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox