staging: greybus: Replace sprintf with sysfs_emit
Subsystems (3)
PATCH 1/1 staging: greybus: Replace sprintf with sysfs_emit
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.
--- drivers/staging/greybus/gbphy.c | 2 +- drivers/staging/greybus/light.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/staging/greybus/gbphy.c +1 -1
@@ -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);
drivers/staging/greybus/light.c +2 -2
@@ -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,
Signature · 1 line
2.43.0
Quoted 7 lines · Mohammad Davoudi
Replace
sprintf()withsysfs_emit()in sysfs show functions. Thesprintf()function is unaware of thePAGE_SIZElimit 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 <[email protected]>
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
Quoted 11 lines · On Thu, 16 Jul 2026 00:31:35 +0300 Dan Carpenter <[email protected]> wrote:
Quoted 7 lines · Mohammad Davoudi
Replace
sprintf()withsysfs_emit()in sysfs show functions. Thesprintf()function is unaware of thePAGE_SIZElimit 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 <[email protected]>We're not applying this kind of patch in cases where sprintf is fine.
Quoted 7 lines
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...
And you also have to double-check that it is valid to call sysfs_emit() in that context.
The call sequences aren't all that obvious and are difficult to verify.
David
Quoted 5 lines
regards,
dan carpenter