From: Jonathan Velez Date: Wed, 9 Jul 2025 13:33:30 +0000 (+0000) Subject: ata: libata-transport: replace scnprintf with sysfs_emit for simple attributes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48925ba7dfa7337f54c5bae6738b2f0bb4055b06;p=thirdparty%2Flinux.git ata: libata-transport: replace scnprintf with sysfs_emit for simple attributes 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, use sysfs_emit instead of scnprintf(). This aligns with the sysfs guidance provided in Documentation/filesystems/sysfs.rst. Signed-off-by: Jonathan Velez Reviewed-by: Damien Le Moal Link: https://lore.kernel.org/r/20250709133330.3546-1-jonvelez12345@gmail.com Signed-off-by: Niklas Cassel --- diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c index e898be49df6b5..62415fe67a11e 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) \