[PATCH 2/4] usb: core: set mod_name in driver registration

From: Shashank Balaji

Date: Tue Jul 21 2026 - 23:43:09 EST


The driver core only creates the sysfs "module" symlink for a built-in
driver when its struct device_driver has mod_name set (see
module_add_driver()). This registration path left mod_name unset, so built-in
drivers using it had no such symlink.

Set mod_name to KBUILD_MODNAME during driver registration. Built-in
drivers now gain the symlink, while loadable modules are unaffected.

Co-developed-by: Rahul Bukte <rahul.bukte@xxxxxxxx>
Signed-off-by: Rahul Bukte <rahul.bukte@xxxxxxxx>
Signed-off-by: Shashank Balaji <shashank.mahadasyam@xxxxxxxx>
---
include/linux/usb.h | 4 ++--
drivers/usb/core/driver.c | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/include/linux/usb.h b/include/linux/usb.h
index 2466183a45f0..6507c217bca7 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -1369,9 +1369,9 @@ extern void usb_deregister(struct usb_driver *);
usb_deregister)

#define usb_register_device_driver(new_udriver) \
- __usb_register_device_driver(new_udriver, THIS_MODULE)
+ __usb_register_device_driver(new_udriver, THIS_MODULE, KBUILD_MODNAME)
extern int __usb_register_device_driver(struct usb_device_driver *,
- struct module *);
+ struct module *, const char *);
extern void usb_deregister_device_driver(struct usb_device_driver *);

extern int usb_register_dev(struct usb_interface *intf,
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index eac1ff468c08..ab809cb6da26 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -983,6 +983,7 @@ bool is_usb_device_driver(const struct device_driver *drv)
* __usb_register_device_driver - register a USB device (not interface) driver
* @new_udriver: USB operations for the device driver
* @owner: module owner of this driver.
+ * @mod_name: module name string
*
* Registers a USB device driver with the USB core. The list of
* unattached devices will be rescanned whenever a new driver is
@@ -991,7 +992,7 @@ bool is_usb_device_driver(const struct device_driver *drv)
* Return: A negative error code on failure and 0 on success.
*/
int __usb_register_device_driver(struct usb_device_driver *new_udriver,
- struct module *owner)
+ struct module *owner, const char *mod_name)
{
int retval = 0;

@@ -1003,6 +1004,7 @@ int __usb_register_device_driver(struct usb_device_driver *new_udriver,
new_udriver->driver.probe = usb_probe_device;
new_udriver->driver.remove = usb_unbind_device;
new_udriver->driver.owner = owner;
+ new_udriver->driver.mod_name = mod_name;
new_udriver->driver.dev_groups = new_udriver->dev_groups;

retval = driver_register(&new_udriver->driver);

--
2.43.0