[PATCH] PCI: automatically set device_driver.owner
A nice feature of sysfs is that it can create the symlink from the driver to the module that is contained in it. It requires that the device_driver.owner is set, what is not the case for many PCI drivers. This patch allows pci_register_driver to set automatically the device_driver.owner for any PCI driver. Credits to Al Viro who suggested the method. Signed-off-by: Laurent Riffard <laurent.riffard@free.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> -- drivers/ide/setup-pci.c | 12 +++++++----- drivers/pci/pci-driver.c | 9 +++++---- include/linux/ide.h | 3 ++- include/linux/pci.h | 10 ++++++++-- 4 files changed, 22 insertions(+), 12 deletions(-)
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
f8eb1005a5
commit
863b18f4b5
@@ -364,15 +364,16 @@ static struct kobj_type pci_driver_kobj_type = {
|
||||
};
|
||||
|
||||
/**
|
||||
* pci_register_driver - register a new pci driver
|
||||
* __pci_register_driver - register a new pci driver
|
||||
* @drv: the driver structure to register
|
||||
* @owner: owner module of drv
|
||||
*
|
||||
* Adds the driver structure to the list of registered drivers.
|
||||
* Returns a negative value on error, otherwise 0.
|
||||
* If no error occurred, the driver remains registered even if
|
||||
* no device was claimed during registration.
|
||||
*/
|
||||
int pci_register_driver(struct pci_driver *drv)
|
||||
int __pci_register_driver(struct pci_driver *drv, struct module *owner)
|
||||
{
|
||||
int error;
|
||||
|
||||
@@ -389,7 +390,7 @@ int pci_register_driver(struct pci_driver *drv)
|
||||
printk(KERN_WARNING "Warning: PCI driver %s has a struct "
|
||||
"device_driver shutdown method, please update!\n",
|
||||
drv->name);
|
||||
drv->driver.owner = drv->owner;
|
||||
drv->driver.owner = owner;
|
||||
drv->driver.kobj.ktype = &pci_driver_kobj_type;
|
||||
|
||||
spin_lock_init(&drv->dynids.lock);
|
||||
@@ -526,7 +527,7 @@ postcore_initcall(pci_driver_init);
|
||||
|
||||
EXPORT_SYMBOL(pci_match_id);
|
||||
EXPORT_SYMBOL(pci_match_device);
|
||||
EXPORT_SYMBOL(pci_register_driver);
|
||||
EXPORT_SYMBOL(__pci_register_driver);
|
||||
EXPORT_SYMBOL(pci_unregister_driver);
|
||||
EXPORT_SYMBOL(pci_dev_driver);
|
||||
EXPORT_SYMBOL(pci_bus_type);
|
||||
|
Reference in New Issue
Block a user