Thread (9 messages) read the whole thread 9 messages, 4 authors, 3d ago
WARM3d

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

From: Shashank Balaji <hidden>
Date: 2026-07-22 03:41:52
Also in: linux-usb, lkml
Subsystem: the rest, usb subsystem · Maintainers: Linus Torvalds, Greg Kroah-Hartman

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 <redacted>
Signed-off-by: Rahul Bukte <redacted>
Signed-off-by: Shashank Balaji <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help