summaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-03-09 11:34:19 +0100
committerJeff Garzik <jeff@garzik.org>2007-03-09 14:41:16 +0100
commit2f8d16a996da0b9be2536994aa7a825418364471 (patch)
tree9daa94bf22e72948ade47d052c7e0995fe68db11 /drivers/base
parentlibata: fix ata_host_release() free order (diff)
downloadlinux-2f8d16a996da0b9be2536994aa7a825418364471.tar.xz
linux-2f8d16a996da0b9be2536994aa7a825418364471.zip
devres: release resources on device_del()
Some platform devices are driven without driver attached, so managed resources can be acquired without driver attached. Make sure such resources are released by calling devres_release_all() in device_del(). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index cf2a398aaaa1..89ebe3682726 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -787,6 +787,13 @@ void device_del(struct device * dev)
device_remove_attrs(dev);
bus_remove_device(dev);
+ /*
+ * Some platform devices are driven without driver attached
+ * and managed resources may have been acquired. Make sure
+ * all resources are released.
+ */
+ devres_release_all(dev);
+
/* Notify the platform of the removal, in case they
* need to do anything...
*/