diff options
Diffstat (limited to 'drivers/pci/pci-driver.c')
-rw-r--r-- | drivers/pci/pci-driver.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index d8ace1f90dd2..309629e03bae 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); |