diff options
Diffstat (limited to 'drivers/pci/pci-driver.c')
| -rw-r--r-- | drivers/pci/pci-driver.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index d8ace1f90dd2..b1c0c707d96c 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
| @@ -56,6 +56,7 @@ store_new_id(struct device_driver *driver, const char *buf, size_t count) | |||
| 56 | subdevice=PCI_ANY_ID, class=0, class_mask=0; | 56 | subdevice=PCI_ANY_ID, class=0, class_mask=0; |
| 57 | unsigned long driver_data=0; | 57 | unsigned long driver_data=0; |
| 58 | int fields=0; | 58 | int fields=0; |
| 59 | int retval = 0; | ||
| 59 | 60 | ||
| 60 | fields = sscanf(buf, "%x %x %x %x %x %x %lux", | 61 | fields = sscanf(buf, "%x %x %x %x %x %x %lux", |
| 61 | &vendor, &device, &subvendor, &subdevice, | 62 | &vendor, &device, &subvendor, &subdevice, |
| @@ -82,10 +83,12 @@ store_new_id(struct device_driver *driver, const char *buf, size_t count) | |||
| 82 | spin_unlock(&pdrv->dynids.lock); | 83 | spin_unlock(&pdrv->dynids.lock); |
| 83 | 84 | ||
| 84 | if (get_driver(&pdrv->driver)) { | 85 | if (get_driver(&pdrv->driver)) { |
| 85 | driver_attach(&pdrv->driver); | 86 | retval = driver_attach(&pdrv->driver); |
| 86 | put_driver(&pdrv->driver); | 87 | put_driver(&pdrv->driver); |
| 87 | } | 88 | } |
| 88 | 89 | ||
| 90 | if (retval) | ||
| 91 | return retval; | ||
| 89 | return count; | 92 | return count; |
| 90 | } | 93 | } |
| 91 | static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); | 94 | static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); |
| @@ -418,7 +421,11 @@ int __pci_register_driver(struct pci_driver *drv, struct module *owner) | |||
| 418 | drv->driver.bus = &pci_bus_type; | 421 | drv->driver.bus = &pci_bus_type; |
| 419 | drv->driver.owner = owner; | 422 | drv->driver.owner = owner; |
| 420 | drv->driver.kobj.ktype = &pci_driver_kobj_type; | 423 | drv->driver.kobj.ktype = &pci_driver_kobj_type; |
| 421 | drv->driver.multithread_probe = pci_multithread_probe; | 424 | |
| 425 | if (pci_multithread_probe) | ||
| 426 | drv->driver.multithread_probe = pci_multithread_probe; | ||
| 427 | else | ||
| 428 | drv->driver.multithread_probe = drv->multithread_probe; | ||
| 422 | 429 | ||
| 423 | spin_lock_init(&drv->dynids.lock); | 430 | spin_lock_init(&drv->dynids.lock); |
| 424 | INIT_LIST_HEAD(&drv->dynids.list); | 431 | INIT_LIST_HEAD(&drv->dynids.list); |
