scsi: 3w-9xxx: Remove snprintf() from sysfs call-backs and replace with sysfs_emit()
authorLee Jones <lee@kernel.org>
Thu, 11 Jan 2024 13:17:22 +0000 (13:17 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 30 Jan 2024 01:34:52 +0000 (20:34 -0500)
Since snprintf() has the documented, but still rather strange trait of
returning the length of the data that *would have been* written to the
array if space were available, rather than the arguably more useful
length of data *actually* written, it is usually considered wise to use
something else instead in order to avoid confusion.

In the case of sysfs call-backs, new wrappers exist that do just that.

Link: https://lwn.net/Articles/69419/
Link: https://github.com/KSPP/linux/issues/105
Cc: Adam Radford <aradford@gmail.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20240111131732.1815560-2-lee@kernel.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/3w-9xxx.c

index f925f8664c2c198ed67f9f26da437ba4733594ee..6fb61c88ea119628684ce717cc539de67c353294 100644 (file)
@@ -161,28 +161,28 @@ static ssize_t twa_show_stats(struct device *dev,
        ssize_t len;
 
        spin_lock_irqsave(tw_dev->host->host_lock, flags);
-       len = snprintf(buf, PAGE_SIZE, "3w-9xxx Driver version: %s\n"
-                      "Current commands posted:   %4d\n"
-                      "Max commands posted:       %4d\n"
-                      "Current pending commands:  %4d\n"
-                      "Max pending commands:      %4d\n"
-                      "Last sgl length:           %4d\n"
-                      "Max sgl length:            %4d\n"
-                      "Last sector count:         %4d\n"
-                      "Max sector count:          %4d\n"
-                      "SCSI Host Resets:          %4d\n"
-                      "AEN's:                     %4d\n",
-                      TW_DRIVER_VERSION,
-                      tw_dev->posted_request_count,
-                      tw_dev->max_posted_request_count,
-                      tw_dev->pending_request_count,
-                      tw_dev->max_pending_request_count,
-                      tw_dev->sgl_entries,
-                      tw_dev->max_sgl_entries,
-                      tw_dev->sector_count,
-                      tw_dev->max_sector_count,
-                      tw_dev->num_resets,
-                      tw_dev->aen_count);
+       len = sysfs_emit(buf, "3w-9xxx Driver version: %s\n"
+                        "Current commands posted:   %4d\n"
+                        "Max commands posted:       %4d\n"
+                        "Current pending commands:  %4d\n"
+                        "Max pending commands:      %4d\n"
+                        "Last sgl length:           %4d\n"
+                        "Max sgl length:            %4d\n"
+                        "Last sector count:         %4d\n"
+                        "Max sector count:          %4d\n"
+                        "SCSI Host Resets:          %4d\n"
+                        "AEN's:                     %4d\n",
+                        TW_DRIVER_VERSION,
+                        tw_dev->posted_request_count,
+                        tw_dev->max_posted_request_count,
+                        tw_dev->pending_request_count,
+                        tw_dev->max_pending_request_count,
+                        tw_dev->sgl_entries,
+                        tw_dev->max_sgl_entries,
+                        tw_dev->sector_count,
+                        tw_dev->max_sector_count,
+                        tw_dev->num_resets,
+                        tw_dev->aen_count);
        spin_unlock_irqrestore(tw_dev->host->host_lock, flags);
        return len;
 } /* End twa_show_stats() */