mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-06 22:58:29 +00:00
thermal: cpu_cooling: Check OPP for errors
It is possible for dev_pm_opp_find_freq_exact() to return errors. It was all fine earlier as dev_pm_opp_get_voltage() had a check within it to check for invalid OPPs, but dev_pm_opp_put() doesn't have any similar checks and the callers need to make sure OPP is valid before calling them. Also update the later dev_warn_ratelimited() to not print the error message as the OPP is guaranteed to be valid now. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
parent
9aec9082bf
commit
3ea3217cf9
1 changed files with 9 additions and 2 deletions
|
@ -393,13 +393,20 @@ static int get_static_power(struct cpufreq_cooling_device *cpufreq_device,
|
||||||
|
|
||||||
opp = dev_pm_opp_find_freq_exact(cpufreq_device->cpu_dev, freq_hz,
|
opp = dev_pm_opp_find_freq_exact(cpufreq_device->cpu_dev, freq_hz,
|
||||||
true);
|
true);
|
||||||
|
if (IS_ERR(opp)) {
|
||||||
|
dev_warn_ratelimited(cpufreq_device->cpu_dev,
|
||||||
|
"Failed to find OPP for frequency %lu: %ld\n",
|
||||||
|
freq_hz, PTR_ERR(opp));
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
voltage = dev_pm_opp_get_voltage(opp);
|
voltage = dev_pm_opp_get_voltage(opp);
|
||||||
dev_pm_opp_put(opp);
|
dev_pm_opp_put(opp);
|
||||||
|
|
||||||
if (voltage == 0) {
|
if (voltage == 0) {
|
||||||
dev_err_ratelimited(cpufreq_device->cpu_dev,
|
dev_err_ratelimited(cpufreq_device->cpu_dev,
|
||||||
"Failed to get voltage for frequency %lu: %ld\n",
|
"Failed to get voltage for frequency %lu\n",
|
||||||
freq_hz, IS_ERR(opp) ? PTR_ERR(opp) : 0);
|
freq_hz);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue