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ää <hannelotta@gmail.com> Link: https://lore.kernel.org/r/20250621164005.4004-1-hannelotta@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>pull/1279/head
parent
8b4f6fafed
commit
711d41ab4a
|
|
@ -119,11 +119,11 @@ ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf)
|
|||
guard(mutex)(&usb_dynids_lock);
|
||||
list_for_each_entry(dynid, &dynids->list, node)
|
||||
if (dynid->id.bInterfaceClass != 0)
|
||||
count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x %02x\n",
|
||||
count += sysfs_emit_at(&buf[count], count, "%04x %04x %02x\n",
|
||||
dynid->id.idVendor, dynid->id.idProduct,
|
||||
dynid->id.bInterfaceClass);
|
||||
else
|
||||
count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x\n",
|
||||
count += sysfs_emit_at(&buf[count], count, "%04x %04x\n",
|
||||
dynid->id.idVendor, dynid->id.idProduct);
|
||||
return count;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue