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;
|
||||
unsigned int cpu;
|
||||
struct cpufreq_frequency_table *table;
|
||||
unsigned long count = 0;
|
||||
|
||||
mutex_lock(&cooling_cpufreq_lock);
|
||||
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;
|
||||
}
|
||||
|
||||
while (table[i].frequency != CPUFREQ_TABLE_END) {
|
||||
for (i = 0; (table[i].frequency != CPUFREQ_TABLE_END); i++) {
|
||||
if (table[i].frequency == CPUFREQ_ENTRY_INVALID)
|
||||
continue;
|
||||
i++;
|
||||
count++;
|
||||
}
|
||||
if (i > 0) {
|
||||
*state = --i;
|
||||
|
||||
if (count > 0) {
|
||||
*state = --count;
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue