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

Reported-by: Nicolas Boichat <>
Cc: Amit Daniel Kachhap <>
Cc: Zhang Rui <>
Cc: Eduardo Valentin <>
Tested-by: Nicolas Boichat <>
Acked-by: Viresh Kumar <>
Signed-off-by: Javi Merino <>
Signed-off-by: Eduardo Valentin <>
1 file changed