/home/lenb/src/to-akpm branch 'acpi-2.6.12'
[sfrench/cifs-2.6.git] / drivers / base / power / resume.c
index 26468971ef5a7711179e87f0d500cdc680888157..bdd96b03b8857a14367535bf408224b1eb939503 100644 (file)
@@ -22,6 +22,9 @@ extern int sysdev_resume(void);
 
 int resume_device(struct device * dev)
 {
+       int error = 0;
+
+       down(&dev->sem);
        if (dev->power.pm_parent
                        && dev->power.pm_parent->power.power_state) {
                dev_err(dev, "PM: resume from %d, parent %s still %d\n",
@@ -31,9 +34,10 @@ int resume_device(struct device * dev)
        }
        if (dev->bus && dev->bus->resume) {
                dev_dbg(dev,"resuming\n");
-               return dev->bus->resume(dev);
+               error = dev->bus->resume(dev);
        }
-       return 0;
+       up(&dev->sem);
+       return error;
 }