Skip to content

Commit 711d41a

Browse files
hannelottagregkh
authored andcommitted
usb: core: Use sysfs_emit_at() when showing dynamic IDs
When formatting the dynamic USB device IDs to show to the user space, instead of scnprintf() function use sysfs_emit_at(). The functions are equivalent, but using the latter is recommended as it ensures that no buffer overruns occur. Testing the change can be done by assigning new IDs to the USB driver's sysfs attribute new_id, and then checking that the same values are returned. For example: echo 4533 7515 > /sys/bus/usb/drivers/usbfs/new_id cat /sys/bus/usb/drivers/usbfs/new_id The output should match the assigned IDs (4533 7515). Signed-off-by: Hanne-Lotta Mäenpää <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 8b4f6fa commit 711d41a

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/usb/core/driver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf)
119119
guard(mutex)(&usb_dynids_lock);
120120
list_for_each_entry(dynid, &dynids->list, node)
121121
if (dynid->id.bInterfaceClass != 0)
122-
count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x %02x\n",
122+
count += sysfs_emit_at(&buf[count], count, "%04x %04x %02x\n",
123123
dynid->id.idVendor, dynid->id.idProduct,
124124
dynid->id.bInterfaceClass);
125125
else
126-
count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x\n",
126+
count += sysfs_emit_at(&buf[count], count, "%04x %04x\n",
127127
dynid->id.idVendor, dynid->id.idProduct);
128128
return count;
129129
}

0 commit comments

Comments
 (0)