diff options
Diffstat (limited to 'drivers/base/power/main.c')
| -rw-r--r-- | drivers/base/power/main.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index e0fb5b0435a3..9cb845e49334 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
| @@ -1031,7 +1031,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) | |||
| 1031 | dpm_wait_for_children(dev, async); | 1031 | dpm_wait_for_children(dev, async); |
| 1032 | 1032 | ||
| 1033 | if (async_error) | 1033 | if (async_error) |
| 1034 | return 0; | 1034 | goto Complete; |
| 1035 | 1035 | ||
| 1036 | pm_runtime_get_noresume(dev); | 1036 | pm_runtime_get_noresume(dev); |
| 1037 | if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) | 1037 | if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) |
| @@ -1040,7 +1040,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) | |||
| 1040 | if (pm_wakeup_pending()) { | 1040 | if (pm_wakeup_pending()) { |
| 1041 | pm_runtime_put_sync(dev); | 1041 | pm_runtime_put_sync(dev); |
| 1042 | async_error = -EBUSY; | 1042 | async_error = -EBUSY; |
| 1043 | return 0; | 1043 | goto Complete; |
| 1044 | } | 1044 | } |
| 1045 | 1045 | ||
| 1046 | device_lock(dev); | 1046 | device_lock(dev); |
| @@ -1097,6 +1097,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) | |||
| 1097 | } | 1097 | } |
| 1098 | 1098 | ||
| 1099 | device_unlock(dev); | 1099 | device_unlock(dev); |
| 1100 | |||
| 1101 | Complete: | ||
| 1100 | complete_all(&dev->power.completion); | 1102 | complete_all(&dev->power.completion); |
| 1101 | 1103 | ||
| 1102 | if (error) { | 1104 | if (error) { |
