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 <pgwipe...@gmail.com>
Tested-by: Nicolas Chauvet <kwiz...@gmail.com>
Tested-by: Matt Merhar <mattmer...@protonmail.com>
Signed-off-by: Dmitry Osipenko <dig...@gmail.com>
---
 drivers/opp/core.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index dfc4208d3f87..48618ff3e99e 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -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);
-- 
2.29.2

Reply via email to