diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index b914e373a47886a8085499818d28a7ade36d4860..47fb71a8066ab1ed7cc719e5ca3e932454b00519 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1010,7 +1010,7 @@ static int genpd_prepare(struct device *dev) genpd_unlock(genpd); ret = pm_generic_prepare(dev); - if (ret) { + if (ret < 0) { genpd_lock(genpd); genpd->prepared_count--; @@ -1018,7 +1018,8 @@ static int genpd_prepare(struct device *dev) genpd_unlock(genpd); } - return ret; + /* Never return 1, as genpd don't cope with the direct_complete path. */ + return ret >= 0 ? 0 : ret; } /**