OPP: Check for invalid OPP in dev_pm_opp_find_level_ceil()
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 28 Nov 2023 07:01:38 +0000 (12:31 +0530)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 28 Nov 2023 10:33:37 +0000 (16:03 +0530)
_find_key_ceil() may return an error and that must be checked before
passing the same to dev_pm_opp_put().

Fixes: 41907aa4ae37 ("OPP: Level zero is valid")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/opp/core.c

index 4f1ca84d9ed03454e0a951f993294384e8b3ecf0..c022d548067d78d592055315ae6846c07d8f2457 100644 (file)
@@ -808,6 +808,8 @@ struct dev_pm_opp *dev_pm_opp_find_level_ceil(struct device *dev,
        struct dev_pm_opp *opp;
 
        opp = _find_key_ceil(dev, &temp, 0, true, _read_level, NULL);
+       if (IS_ERR(opp))
+               return opp;
 
        /* False match */
        if (temp == OPP_LEVEL_UNSET) {