Thermal: fix bug of counting cpu frequencies.
In the while loop for counting cpu frequencies, if table[i].frequency equals CPUFREQ_ENTRY_INVALID, index i won't be increased, so this leads to an endless loop, what's more the index i cannot be referred as cpu frequencies number if there is CPUFREQ_ENTRY_INVALID case. Signed-off-by: hongbo.zhang <hongbo.zhang@linaro.com> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Amit Daniel Kachhap <amit.kachhap@linaro.org> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
parent
6b6519df84
commit
9c51b05a78
|
@ -245,6 +245,7 @@ static int cpufreq_get_max_state(struct thermal_cooling_device *cdev,
|
||||||
struct cpumask *maskPtr;
|
struct cpumask *maskPtr;
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
struct cpufreq_frequency_table *table;
|
struct cpufreq_frequency_table *table;
|
||||||
|
unsigned long count = 0;
|
||||||
|
|
||||||
mutex_lock(&cooling_cpufreq_lock);
|
mutex_lock(&cooling_cpufreq_lock);
|
||||||
list_for_each_entry(cpufreq_device, &cooling_cpufreq_list, node) {
|
list_for_each_entry(cpufreq_device, &cooling_cpufreq_list, node) {
|
||||||
|
@ -263,13 +264,14 @@ static int cpufreq_get_max_state(struct thermal_cooling_device *cdev,
|
||||||
goto return_get_max_state;
|
goto return_get_max_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (table[i].frequency != CPUFREQ_TABLE_END) {
|
for (i = 0; (table[i].frequency != CPUFREQ_TABLE_END); i++) {
|
||||||
if (table[i].frequency == CPUFREQ_ENTRY_INVALID)
|
if (table[i].frequency == CPUFREQ_ENTRY_INVALID)
|
||||||
continue;
|
continue;
|
||||||
i++;
|
count++;
|
||||||
}
|
}
|
||||||
if (i > 0) {
|
|
||||||
*state = --i;
|
if (count > 0) {
|
||||||
|
*state = --count;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue