summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/base/bus.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index e87a9e825a86..49683a1d3898 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -148,8 +148,10 @@ static int driver_attach(struct device_driver * drv)
list_for_each(entry,&bus->devices) {
struct device * dev = container_of(entry,struct device,bus_list);
if (get_device(dev)) {
- if (!bus_match(dev,drv) && dev->driver)
- devclass_add_device(dev);
+ if (!dev->driver) {
+ if (!bus_match(dev,drv) && dev->driver)
+ devclass_add_device(dev);
+ }
put_device(dev);
}
}