diff options
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/dd.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 510e7884975f..f70513748947 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c | |||
@@ -136,18 +136,17 @@ probe_failed: | |||
136 | driver_sysfs_remove(dev); | 136 | driver_sysfs_remove(dev); |
137 | dev->driver = NULL; | 137 | dev->driver = NULL; |
138 | 138 | ||
139 | if (ret == -ENODEV || ret == -ENXIO) { | 139 | if (ret != -ENODEV && ret != -ENXIO) { |
140 | /* Driver matched, but didn't support device | ||
141 | * or device not found. | ||
142 | * Not an error; keep going. | ||
143 | */ | ||
144 | ret = 0; | ||
145 | } else { | ||
146 | /* driver matched but the probe failed */ | 140 | /* driver matched but the probe failed */ |
147 | printk(KERN_WARNING | 141 | printk(KERN_WARNING |
148 | "%s: probe of %s failed with error %d\n", | 142 | "%s: probe of %s failed with error %d\n", |
149 | drv->name, dev->bus_id, ret); | 143 | drv->name, dev->bus_id, ret); |
150 | } | 144 | } |
145 | /* | ||
146 | * Ignore errors returned by ->probe so that the next driver can try | ||
147 | * its luck. | ||
148 | */ | ||
149 | ret = 0; | ||
151 | done: | 150 | done: |
152 | kfree(data); | 151 | kfree(data); |
153 | atomic_dec(&probe_count); | 152 | atomic_dec(&probe_count); |