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

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
Loading
Loading
Loading
Loading
+12 −6
Original line number Original line Diff line number Diff line
@@ -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)
			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);