Commit 50b6b87c authored by Viresh Kumar's avatar Viresh Kumar

OPP: Improve error handling in dev_pm_opp_of_cpumask_add_table()

The error handling wasn't appropriate in
dev_pm_opp_of_cpumask_add_table(). For example it returns 0 on success
and also for the case where cpumask is empty or cpu_device wasn't found
for any of the CPUs.

It should really return error on such cases, so that the callers can be
aware of the outcome.

Fix it.
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent 5ed4cecd
...@@ -614,16 +614,18 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table); ...@@ -614,16 +614,18 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table);
int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask) int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
{ {
struct device *cpu_dev; struct device *cpu_dev;
int cpu, ret = 0; int cpu, ret;
WARN_ON(cpumask_empty(cpumask)); if (WARN_ON(cpumask_empty(cpumask)))
return -ENODEV;
for_each_cpu(cpu, cpumask) { for_each_cpu(cpu, cpumask) {
cpu_dev = get_cpu_device(cpu); cpu_dev = get_cpu_device(cpu);
if (!cpu_dev) { if (!cpu_dev) {
pr_err("%s: failed to get cpu%d device\n", __func__, pr_err("%s: failed to get cpu%d device\n", __func__,
cpu); cpu);
continue; ret = -ENODEV;
goto remove_table;
} }
ret = dev_pm_opp_of_add_table(cpu_dev); ret = dev_pm_opp_of_add_table(cpu_dev);
...@@ -635,12 +637,16 @@ int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask) ...@@ -635,12 +637,16 @@ int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)
pr_debug("%s: couldn't find opp table for cpu:%d, %d\n", pr_debug("%s: couldn't find opp table for cpu:%d, %d\n",
__func__, cpu, ret); __func__, cpu, ret);
/* Free all other OPPs */ goto remove_table;
_dev_pm_opp_cpumask_remove_table(cpumask, cpu);
break;
} }
} }
return 0;
remove_table:
/* Free all other OPPs */
_dev_pm_opp_cpumask_remove_table(cpumask, cpu);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_add_table); EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_add_table);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment