The OPP table was freed, but not the individual OPPs which is done from
_dev_pm_opp_remove_table(). Fix it by calling _dev_pm_opp_remove_table()
as well.

Cc: 4.18 <[email protected]> # v4.18
Fixes: 3ba98324e81a ("PM / OPP: Get performance state using genpd helper")
Signed-off-by: Viresh Kumar <[email protected]>
---
 drivers/opp/of.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 7af0ddec936b..20988c426650 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -425,6 +425,7 @@ static int _of_add_opp_table_v2(struct device *dev, struct 
device_node *opp_np)
                dev_err(dev, "Not all nodes have performance state set (%d: 
%d)\n",
                        count, pstate_count);
                ret = -ENOENT;
+               _dev_pm_opp_remove_table(opp_table, dev, false);
                goto put_opp_table;
        }
 
-- 
2.18.0.rc1.242.g61856ae69a2c

Reply via email to