|
@@ -1031,7 +1031,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
|
|
|
dpm_wait_for_children(dev, async);
|
|
|
|
|
|
if (async_error)
|
|
|
- return 0;
|
|
|
+ goto Complete;
|
|
|
|
|
|
pm_runtime_get_noresume(dev);
|
|
|
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)
|
|
|
if (pm_wakeup_pending()) {
|
|
|
pm_runtime_put_sync(dev);
|
|
|
async_error = -EBUSY;
|
|
|
- return 0;
|
|
|
+ goto Complete;
|
|
|
}
|
|
|
|
|
|
device_lock(dev);
|
|
@@ -1097,6 +1097,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
|
|
|
}
|
|
|
|
|
|
device_unlock(dev);
|
|
|
+
|
|
|
+ Complete:
|
|
|
complete_all(&dev->power.completion);
|
|
|
|
|
|
if (error) {
|