PM / OPP: fix the errors occurred during getting or setting voltage
[firefly-linux-kernel-4.4.55.git] / drivers / base / power / runtime.c
index e1a10a03df8ec0f92cb43813e881e5d7bb0237c5..9796a1a15ef6da5de3e4f746fbc7f06b17c969e6 100644 (file)
@@ -1468,11 +1468,16 @@ int pm_runtime_force_resume(struct device *dev)
                goto out;
        }
 
-       ret = callback(dev);
+       ret = pm_runtime_set_active(dev);
        if (ret)
                goto out;
 
-       pm_runtime_set_active(dev);
+       ret = callback(dev);
+       if (ret) {
+               pm_runtime_set_suspended(dev);
+               goto out;
+       }
+
        pm_runtime_mark_last_busy(dev);
 out:
        pm_runtime_enable(dev);