summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-11-09 06:46:14 +0300
committerGreg Kroah-Hartman <gregkh@suse.de>2006-12-02 01:52:01 +0300
commit289535334646796fe41f199718e4a731f7411a92 (patch)
tree7536d19daaf603df4d672ab52ea8ad8dd7f29d63
parent465ae641e4a3e5028aa9c85d3843259aa28a22ce (diff)
downloadlinux-289535334646796fe41f199718e4a731f7411a92.tar.xz
Driver core: Call platform_notify_remove later
Move the call to platform_notify_remove() to after the call to bus_remove_device(), where it belongs. It's bogus to notify the platform of removal while drivers are still attached to the device and possibly still operating since the platform might use this callback to tear down some resources used by the driver (ACPI bits, iommu table, ...) Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: "Brown, Len" <len.brown@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/base/core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index f544adc5a5e2..5d11bbdfbd2f 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -682,6 +682,7 @@ void device_del(struct device * dev)
device_remove_file(dev, &dev->uevent_attr);
device_remove_groups(dev);
device_remove_attrs(dev);
+ bus_remove_device(dev);
/* Notify the platform of the removal, in case they
* need to do anything...
@@ -691,7 +692,6 @@ void device_del(struct device * dev)
if (dev->bus)
blocking_notifier_call_chain(&dev->bus->bus_notifier,
BUS_NOTIFY_DEL_DEVICE, dev);
- bus_remove_device(dev);
device_pm_remove(dev);
kobject_uevent(&dev->kobj, KOBJ_REMOVE);
kobject_del(&dev->kobj);