diff options
| -rw-r--r-- | drivers/base/bus.c | 6 |
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); } } |
