diff options
Diffstat (limited to 'drivers/base/dd.c')
-rw-r--r-- | drivers/base/dd.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 616b4bbacf1b..18dba8e78da7 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c | |||
@@ -232,7 +232,7 @@ static int device_probe_drivers(void *data) | |||
232 | * | 232 | * |
233 | * Returns 1 if the device was bound to a driver; | 233 | * Returns 1 if the device was bound to a driver; |
234 | * 0 if no matching device was found or multithreaded probing is done; | 234 | * 0 if no matching device was found or multithreaded probing is done; |
235 | * error code otherwise. | 235 | * -ENODEV if the device is not registered. |
236 | * | 236 | * |
237 | * When called for a USB interface, @dev->parent->sem must be held. | 237 | * When called for a USB interface, @dev->parent->sem must be held. |
238 | */ | 238 | */ |
@@ -246,6 +246,10 @@ int device_attach(struct device * dev) | |||
246 | ret = device_bind_driver(dev); | 246 | ret = device_bind_driver(dev); |
247 | if (ret == 0) | 247 | if (ret == 0) |
248 | ret = 1; | 248 | ret = 1; |
249 | else { | ||
250 | dev->driver = NULL; | ||
251 | ret = 0; | ||
252 | } | ||
249 | } else { | 253 | } else { |
250 | if (dev->bus->multithread_probe) | 254 | if (dev->bus->multithread_probe) |
251 | probe_task = kthread_run(device_probe_drivers, dev, | 255 | probe_task = kthread_run(device_probe_drivers, dev, |