diff options
Diffstat (limited to 'drivers/base/power/resume.c')
-rw-r--r-- | drivers/base/power/resume.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/base/power/resume.c b/drivers/base/power/resume.c index 26468971ef5a..bdd96b03b885 100644 --- a/drivers/base/power/resume.c +++ b/drivers/base/power/resume.c | |||
@@ -22,6 +22,9 @@ extern int sysdev_resume(void); | |||
22 | 22 | ||
23 | int resume_device(struct device * dev) | 23 | int resume_device(struct device * dev) |
24 | { | 24 | { |
25 | int error = 0; | ||
26 | |||
27 | down(&dev->sem); | ||
25 | if (dev->power.pm_parent | 28 | if (dev->power.pm_parent |
26 | && dev->power.pm_parent->power.power_state) { | 29 | && dev->power.pm_parent->power.power_state) { |
27 | dev_err(dev, "PM: resume from %d, parent %s still %d\n", | 30 | dev_err(dev, "PM: resume from %d, parent %s still %d\n", |
@@ -31,9 +34,10 @@ int resume_device(struct device * dev) | |||
31 | } | 34 | } |
32 | if (dev->bus && dev->bus->resume) { | 35 | if (dev->bus && dev->bus->resume) { |
33 | dev_dbg(dev,"resuming\n"); | 36 | dev_dbg(dev,"resuming\n"); |
34 | return dev->bus->resume(dev); | 37 | error = dev->bus->resume(dev); |
35 | } | 38 | } |
36 | return 0; | 39 | up(&dev->sem); |
40 | return error; | ||
37 | } | 41 | } |
38 | 42 | ||
39 | 43 | ||