Commit 28953533 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Greg Kroah-Hartman

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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 465ae641
...@@ -682,6 +682,7 @@ void device_del(struct device * dev) ...@@ -682,6 +682,7 @@ void device_del(struct device * dev)
device_remove_file(dev, &dev->uevent_attr); device_remove_file(dev, &dev->uevent_attr);
device_remove_groups(dev); device_remove_groups(dev);
device_remove_attrs(dev); device_remove_attrs(dev);
bus_remove_device(dev);
/* Notify the platform of the removal, in case they /* Notify the platform of the removal, in case they
* need to do anything... * need to do anything...
...@@ -691,7 +692,6 @@ void device_del(struct device * dev) ...@@ -691,7 +692,6 @@ void device_del(struct device * dev)
if (dev->bus) if (dev->bus)
blocking_notifier_call_chain(&dev->bus->bus_notifier, blocking_notifier_call_chain(&dev->bus->bus_notifier,
BUS_NOTIFY_DEL_DEVICE, dev); BUS_NOTIFY_DEL_DEVICE, dev);
bus_remove_device(dev);
device_pm_remove(dev); device_pm_remove(dev);
kobject_uevent(&dev->kobj, KOBJ_REMOVE); kobject_uevent(&dev->kobj, KOBJ_REMOVE);
kobject_del(&dev->kobj); kobject_del(&dev->kobj);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment