PM / sleep: Handle failures in device_suspend_late() consistently
[firefly-linux-kernel-4.4.55.git] / drivers / base / power / main.c
index 1710c26ba097d363873dfd8318ff1d949aeb4a86..ae60e6357d7bc1d00d78c0a9248da7e5efc7c3b5 100644 (file)
@@ -1262,14 +1262,15 @@ int dpm_suspend_late(pm_message_t state)
                error = device_suspend_late(dev);
 
                mutex_lock(&dpm_list_mtx);
+               if (!list_empty(&dev->power.entry))
+                       list_move(&dev->power.entry, &dpm_late_early_list);
+
                if (error) {
                        pm_dev_err(dev, state, " late", error);
                        dpm_save_failed_dev(dev_name(dev));
                        put_device(dev);
                        break;
                }
-               if (!list_empty(&dev->power.entry))
-                       list_move(&dev->power.entry, &dpm_late_early_list);
                put_device(dev);
 
                if (async_error)