drivers/ata/libata-transport.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sprintf, snprintf, and scnprintf do not consider the PAGE_SIZE maximum
of the temporary buffer used for outputting sysfs content and they may
overrun the PAGE_SIZE buffer length.
To avoid output defects with the ATA transport class simple attributes,
scnprintf() was converted to sysfs_emit(). This aligns with the sysfs
guidance provided in Documentation/filesystems/sysfs.rst.
Signed-off-by: Jonathan Velez <jonvelez12345@gmail.com>
---
drivers/ata/libata-transport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c
index e898be49df6b..62415fe67a11 100644
--- a/drivers/ata/libata-transport.c
+++ b/drivers/ata/libata-transport.c
@@ -202,7 +202,7 @@ show_ata_port_##name(struct device *dev, \
{ \
struct ata_port *ap = transport_class_to_port(dev); \
\
- return scnprintf(buf, 20, format_string, cast ap->field); \
+ return sysfs_emit(buf, format_string, cast ap->field); \
}
#define ata_port_simple_attr(field, name, format_string, type) \
@@ -389,7 +389,7 @@ show_ata_dev_##field(struct device *dev, \
{ \
struct ata_device *ata_dev = transport_class_to_dev(dev); \
\
- return scnprintf(buf, 20, format_string, cast ata_dev->field); \
+ return sysfs_emit(buf, format_string, cast ata_dev->field); \
}
#define ata_dev_simple_attr(field, format_string, type) \
--
2.43.0
On 7/7/25 9:20 PM, Jonathan Velez wrote: > sprintf, snprintf, and scnprintf do not consider the PAGE_SIZE maximum > of the temporary buffer used for outputting sysfs content and they may > overrun the PAGE_SIZE buffer length. > > To avoid output defects with the ATA transport class simple attributes, > scnprintf() was converted to sysfs_emit(). This aligns with the sysfs > guidance provided in Documentation/filesystems/sysfs.rst. Nit: please use assertive style (no past tense/passive form) To avoid output defects with the ATA transport class simple attributes, use sysfs_emit instead of scnprintf(). > > Signed-off-by: Jonathan Velez <jonvelez12345@gmail.com> Otherwise, looks good. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> -- Damien Le Moal Western Digital Research
> On Jul 7, 2025, at 9:15 PM, Damien Le Moal <dlemoal@kernel.org> wrote: > > On 7/7/25 9:20 PM, Jonathan Velez wrote: >> sprintf, snprintf, and scnprintf do not consider the PAGE_SIZE maximum >> of the temporary buffer used for outputting sysfs content and they may >> overrun the PAGE_SIZE buffer length. >> >> To avoid output defects with the ATA transport class simple attributes, >> scnprintf() was converted to sysfs_emit(). This aligns with the sysfs >> guidance provided in Documentation/filesystems/sysfs.rst. > > Nit: please use assertive style (no past tense/passive form) > > To avoid output defects with the ATA transport class simple attributes, > use sysfs_emit instead of scnprintf(). I will amend the commit message and submit V2 of the patch. > >> >> Signed-off-by: Jonathan Velez <jonvelez12345@gmail.com> > > Otherwise, looks good. > > Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Thank you, I’m considering reviewing the rest of the libata-transport.c module for similar updates. Thoughts? > -- > Damien Le Moal > Western Digital Research
© 2016 - 2025 Red Hat, Inc.