From: Dan Carpenter Date: Wed, 17 Apr 2013 07:18:28 +0000 (+0000) Subject: Thermal: cpufreq cooling: endian bug in cpufreq_get_max_state() X-Git-Tag: v3.10-rc1~42^2~9 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4f89038f177462dbd2fd911297fd004226176db7;p=uclinux-h8%2Flinux.git Thermal: cpufreq cooling: endian bug in cpufreq_get_max_state() This code doesn't work on big endian systems because we're storing low values in the high bits of the unsigned long. It makes it a very high value instead. Signed-off-by: Dan Carpenter Signed-off-by: Zhang Rui --- diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c index 5f5c780bcd90..768b508f0d69 100644 --- a/drivers/thermal/cpu_cooling.c +++ b/drivers/thermal/cpu_cooling.c @@ -303,12 +303,12 @@ static int cpufreq_get_max_state(struct thermal_cooling_device *cdev, struct cpufreq_cooling_device *cpufreq_device = cdev->devdata; struct cpumask *mask = &cpufreq_device->allowed_cpus; unsigned int cpu; - unsigned long count = 0; + unsigned int count = 0; int ret; cpu = cpumask_any(mask); - ret = get_property(cpu, 0, (unsigned int *)&count, GET_MAXL); + ret = get_property(cpu, 0, &count, GET_MAXL); if (count > 0) *state = count;