aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/opp/of.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2018-09-13 13:09:27 +0530
committerViresh Kumar <viresh.kumar@linaro.org>2018-09-19 14:56:40 -0700
commit404b1369ea26f598b96ae4d3183262a879703cfe (patch)
treedf57c469958d52b0a6f1b45da07c16443f812492 /drivers/opp/of.c
parentOPP: Free OPP table properly on performance state irregularities (diff)
downloadlinux-dev-404b1369ea26f598b96ae4d3183262a879703cfe.tar.xz
linux-dev-404b1369ea26f598b96ae4d3183262a879703cfe.zip
OPP: Don't try to remove all OPP tables on failure
dev_pm_opp_of_cpumask_add_table() creates the OPP table for all CPUs present in the cpumask and on errors it should revert all changes it has done. It actually is doing a bit more than that. On errors, it tries to free all the OPP tables, even the one it hasn't created yet. This may also end up freeing the OPP tables which were created from separate path, like dev_pm_opp_set_supported_hw(). Reported-and-tested-by: Niklas Cassel <niklas.cassel@linaro.org> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/opp/of.c')
-rw-r--r--drivers/opp/of.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 20988c426650..86222586f27b 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -592,7 +592,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_add_table_indexed);
*/
void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask)
{
- _dev_pm_opp_cpumask_remove_table(cpumask, true);
+ _dev_pm_opp_cpumask_remove_table(cpumask, true, -1);
}
EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table);
@@ -627,7 +627,7 @@ int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
__func__, cpu, ret);
/* Free all other OPPs */
- dev_pm_opp_of_cpumask_remove_table(cpumask);
+ _dev_pm_opp_cpumask_remove_table(cpumask, true, cpu);
break;
}
}