mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 10:12:16 +09:00
thermal: cpu_cooling: Avoid accessing potentially freed structures
commit289d72afddupstream. After the lock is dropped, it is possible that the cpufreq_dev gets freed before we call get_level() and that can cause kernel to crash. Drop the lock after we are done using the structure. Fixes:02373d7c69("thermal: cpu_cooling: fix lockdep problems in cpu_cooling") Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Tested-by: Lukasz Luba <lukasz.luba@arm.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
76572609e4
commit
7cd7b56037
@@ -191,8 +191,10 @@ unsigned long cpufreq_cooling_get_level(unsigned int cpu, unsigned int freq)
|
||||
mutex_lock(&cooling_list_lock);
|
||||
list_for_each_entry(cpufreq_dev, &cpufreq_dev_list, node) {
|
||||
if (cpumask_test_cpu(cpu, &cpufreq_dev->allowed_cpus)) {
|
||||
unsigned long level = get_level(cpufreq_dev, freq);
|
||||
|
||||
mutex_unlock(&cooling_list_lock);
|
||||
return get_level(cpufreq_dev, freq);
|
||||
return level;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&cooling_list_lock);
|
||||
|
||||
Reference in New Issue
Block a user