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); |