thermal: cpu_cooling: fix 'descend' check in get_property()
authorShawn Guo <shawn.guo@linaro.org>
Tue, 28 May 2013 06:22:32 +0000 (06:22 +0000)
committerZhang Rui <rui.zhang@intel.com>
Tue, 28 May 2013 06:49:31 +0000 (14:49 +0800)
The variable 'descend' is initialized as -1 in function get_property(),
and will never get any chance to be updated by the following code.

if (freq != CPUFREQ_ENTRY_INVALID && descend != -1)
descend = !!(freq > table[i].frequency);

This makes function get_property() return the wrong frequency for given
cooling level if the frequency table is sorted in ascending.  Fix it
by correcting the 'descend' check in if-condition to 'descend == -1'.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
drivers/thermal/cpu_cooling.c

index c94bf2e..82e15db 100644 (file)
@@ -167,7 +167,7 @@ static int get_property(unsigned int cpu, unsigned long input,
                        continue;
 
                /* get the frequency order */
-               if (freq != CPUFREQ_ENTRY_INVALID && descend != -1)
+               if (freq != CPUFREQ_ENTRY_INVALID && descend == -1)
                        descend = !!(freq > table[i].frequency);
 
                freq = table[i].frequency;