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 Signed-off-by: Rahul Bukte Signed-off-by: Shashank Balaji --- 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