aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/dd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/dd.c')
-rw-r--r--drivers/base/dd.c5
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