opp: Fix adding OPP entries in a wrong order if rate is unavailable
authorDmitry Osipenko <digetx@gmail.com>
Mon, 18 Jan 2021 00:55:13 +0000 (03:55 +0300)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 2 Feb 2021 04:56:26 +0000 (10:26 +0530)
Fix adding OPP entries in a wrong (opposite) order if OPP rate is
unavailable. The OPP comparison was erroneously skipped, thus OPPs
were left unsorted.

Tested-by: Peter Geis <pgwipeout@gmail.com>
Tested-by: Nicolas Chauvet <kwizart@gmail.com>
Tested-by: Matt Merhar <mattmerhar@protonmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/opp/core.c

index 8c905aa..5793c83 100644 (file)
@@ -1527,12 +1527,10 @@ int _opp_add(struct device *dev, struct dev_pm_opp *new_opp,
        mutex_lock(&opp_table->lock);
        head = &opp_table->opp_list;
 
-       if (likely(!rate_not_available)) {
-               ret = _opp_is_duplicate(dev, new_opp, opp_table, &head);
-               if (ret) {
-                       mutex_unlock(&opp_table->lock);
-                       return ret;
-               }
+       ret = _opp_is_duplicate(dev, new_opp, opp_table, &head);
+       if (ret) {
+               mutex_unlock(&opp_table->lock);
+               return ret;
        }
 
        list_add(&new_opp->node, head);