thermal: cpu_cooling: fix out of bounds access in time_in_idle
authorJavi Merino <javi.merino@arm.com>
Thu, 11 Feb 2016 12:00:51 +0000 (12:00 +0000)
committerEduardo Valentin <edubezval@gmail.com>
Thu, 11 Feb 2016 15:13:29 +0000 (07:13 -0800)
commita53b8394ec3c67255928df6ee9cc99dd1cd452e3
tree3eaafabc5e9d5644b57b477ef9eb40aafcbf8448
parent26716ce124fce88f288f07738ef685d5dfe5c13f
thermal: cpu_cooling: fix out of bounds access in time_in_idle

In __cpufreq_cooling_register() we allocate the arrays for time_in_idle
and time_in_idle_timestamp to be as big as the number of cpus in this
cpufreq device.  However, in get_load() we access this array using the
cpu number as index, which can result in an out of bound access.

Index time_in_idle{,_timestamp} using the index in the cpufreq_device's
allowed_cpus mask, as we do for the load_cpu array in
cpufreq_get_requested_power()

Reported-by: Nicolas Boichat <drinkcat@chromium.org>
Cc: Amit Daniel Kachhap <amit.kachhap@gmail.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Javi Merino <javi.merino@arm.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/thermal/cpu_cooling.c