diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/dd.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 54922647522d..b0726eb6405e 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c | |||
@@ -289,11 +289,10 @@ static void __device_release_driver(struct device * dev) | |||
289 | { | 289 | { |
290 | struct device_driver * drv; | 290 | struct device_driver * drv; |
291 | 291 | ||
292 | drv = get_driver(dev->driver); | 292 | drv = dev->driver; |
293 | if (drv) { | 293 | if (drv) { |
294 | driver_sysfs_remove(dev); | 294 | driver_sysfs_remove(dev); |
295 | sysfs_remove_link(&dev->kobj, "driver"); | 295 | sysfs_remove_link(&dev->kobj, "driver"); |
296 | klist_remove(&dev->knode_driver); | ||
297 | 296 | ||
298 | if (dev->bus) | 297 | if (dev->bus) |
299 | blocking_notifier_call_chain(&dev->bus->p->bus_notifier, | 298 | blocking_notifier_call_chain(&dev->bus->p->bus_notifier, |
@@ -306,7 +305,7 @@ static void __device_release_driver(struct device * dev) | |||
306 | drv->remove(dev); | 305 | drv->remove(dev); |
307 | devres_release_all(dev); | 306 | devres_release_all(dev); |
308 | dev->driver = NULL; | 307 | dev->driver = NULL; |
309 | put_driver(drv); | 308 | klist_remove(&dev->knode_driver); |
310 | } | 309 | } |
311 | } | 310 | } |
312 | 311 | ||