From: Andrew Morton device_attach() has tristate return-value semantics. Signed-off-by: Andrew Morton --- drivers/base/bus.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff -puN drivers/base/bus.c~drivers-base-check-errors-fix drivers/base/bus.c --- a/drivers/base/bus.c~drivers-base-check-errors-fix +++ a/drivers/base/bus.c @@ -401,8 +401,10 @@ int bus_attach_device(struct device * de if (bus) { ret = device_attach(dev); - if (ret == 0) + if (ret >= 0) { klist_add_tail(&dev->knode_bus, &bus->klist_devices); + ret = 0; + } } return ret; } @@ -571,6 +573,8 @@ static int __must_check bus_rescan_devic ret = device_attach(dev); if (dev->parent) up(&dev->parent->sem); + if (ret > 0) + ret = 0; } return ret; } _