Skip to content

Commit

Permalink
[PATCH] USB: make registering a usb driver automatically set the modu…
Browse files Browse the repository at this point in the history
…le owner

This fixes the driver that forgot to set the module owner up.  Now we
can remove the unneeded pointer from the usb driver structure.  The idea
for how to do this was from Al Viro, who did this for the PCI drivers.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Jan 4, 2006
1 parent ba9dc65 commit 2143acc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
9 changes: 5 additions & 4 deletions drivers/usb/core/driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,9 @@ int usb_device_match(struct device *dev, struct device_driver *drv)
}

/**
* usb_register - register a USB driver
* usb_register_driver - register a USB driver
* @new_driver: USB operations for the driver
* @owner: module owner of this driver.
*
* Registers a USB driver with the USB core. The list of unattached
* interfaces will be rescanned whenever a new driver is added, allowing
Expand All @@ -416,7 +417,7 @@ int usb_device_match(struct device *dev, struct device_driver *drv)
* usb_register_dev() to enable that functionality. This function no longer
* takes care of that.
*/
int usb_register(struct usb_driver *new_driver)
int usb_register_driver(struct usb_driver *new_driver, struct module *owner)
{
int retval = 0;

Expand All @@ -427,7 +428,7 @@ int usb_register(struct usb_driver *new_driver)
new_driver->driver.bus = &usb_bus_type;
new_driver->driver.probe = usb_probe_interface;
new_driver->driver.remove = usb_unbind_interface;
new_driver->driver.owner = new_driver->owner;
new_driver->driver.owner = owner;
spin_lock_init(&new_driver->dynids.lock);
INIT_LIST_HEAD(&new_driver->dynids.list);

Expand All @@ -447,7 +448,7 @@ int usb_register(struct usb_driver *new_driver)

return retval;
}
EXPORT_SYMBOL_GPL(usb_register);
EXPORT_SYMBOL_GPL(usb_register_driver);

/**
* usb_deregister - unregister a USB driver
Expand Down
6 changes: 5 additions & 1 deletion include/linux/usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,11 @@ struct usb_class_driver {
* use these in module_init()/module_exit()
* and don't forget MODULE_DEVICE_TABLE(usb, ...)
*/
extern int usb_register(struct usb_driver *);
int usb_register_driver(struct usb_driver *, struct module *);
static inline int usb_register(struct usb_driver *driver)
{
return usb_register_driver(driver, THIS_MODULE);
}
extern void usb_deregister(struct usb_driver *);

extern int usb_register_dev(struct usb_interface *intf,
Expand Down

0 comments on commit 2143acc

Please sign in to comment.