Skip to content

Commit

Permalink
driver core: Don't stop probing on ->probe errors.
Browse files Browse the repository at this point in the history
Don't stop on the first ->probe error that is not -ENODEV/-ENXIO.

There might be a driver registered returning an unresonable return code, and
this stops probing completely even though it may make sense to try the next
possible driver. At worst, we may end up with an unbound device.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Cornelia Huck authored and Greg Kroah-Hartman committed Feb 7, 2007
1 parent fbfb144 commit c578abb
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions drivers/base/dd.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,18 +136,17 @@ static int really_probe(void *void_data)
driver_sysfs_remove(dev);
dev->driver = NULL;

if (ret == -ENODEV || ret == -ENXIO) {
/* Driver matched, but didn't support device
* or device not found.
* Not an error; keep going.
*/
ret = 0;
} else {
if (ret != -ENODEV && ret != -ENXIO) {
/* driver matched but the probe failed */
printk(KERN_WARNING
"%s: probe of %s failed with error %d\n",
drv->name, dev->bus_id, ret);
}
/*
* Ignore errors returned by ->probe so that the next driver can try
* its luck.
*/
ret = 0;
done:
kfree(data);
atomic_dec(&probe_count);
Expand Down

0 comments on commit c578abb

Please sign in to comment.