]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/base/core.c
Driver core: Call device_pm_add() after bus_add_device() in device_add()
[linux-2.6-omap-h63xx.git] / drivers / base / core.c
index 79848e6c5db59816cd05fa947ee3fa2ef40b882a..adbc01788447c899b9f105ccd8aa67c01554b789 100644 (file)
@@ -817,17 +817,12 @@ int device_add(struct device *dev)
        error = device_add_attrs(dev);
        if (error)
                goto AttrsError;
-       error = dpm_sysfs_add(dev);
-       if (error)
-               goto PMError;
-       error = device_pm_add(dev);
-       if (error) {
-               dpm_sysfs_remove(dev);
-               goto PMError;
-       }
        error = bus_add_device(dev);
        if (error)
                goto BusError;
+       error = device_pm_add(dev);
+       if (error)
+               goto PMError;
        kobject_uevent(&dev->kobj, KOBJ_ADD);
        bus_attach_device(dev);
        if (parent)
@@ -847,9 +842,9 @@ int device_add(struct device *dev)
  Done:
        put_device(dev);
        return error;
- BusError:
-       device_pm_remove(dev);
  PMError:
+       bus_remove_device(dev);
+ BusError:
        if (dev->bus)
                blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
                                             BUS_NOTIFY_DEL_DEVICE, dev);