[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f8c436ae-0f4c-5d2e-51a8-0e856fbf8f44@linaro.org>
Date: Tue, 17 Nov 2020 09:57:29 +0100
From: Daniel Lezcano <daniel.lezcano@...aro.org>
To: Zhang Rui <rui.zhang@...el.com>,
Mukesh Ojha <mojha@...eaurora.org>, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: amitk@...nel.org
Subject: Re: [PATCH] thermal: Fix NULL pointer dereference issue
On 17/11/2020 08:18, Zhang Rui wrote:
> On Mon, 2020-11-16 at 21:59 +0530, Mukesh Ojha wrote:
>> Cooling stats variable inside thermal_cooling_device_stats_update()
>> can get NULL. We should add a NULL check on stat inside for sanity.
>>
>> Signed-off-by: Mukesh Ojha <mojha@...eaurora.org>
>> ---
>> drivers/thermal/thermal_sysfs.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/thermal/thermal_sysfs.c
>> b/drivers/thermal/thermal_sysfs.c
>> index a6f371f..f52708f 100644
>> --- a/drivers/thermal/thermal_sysfs.c
>> +++ b/drivers/thermal/thermal_sysfs.c
>> @@ -754,6 +754,9 @@ void thermal_cooling_device_stats_update(struct
>> thermal_cooling_device *cdev,
>> {
>> struct cooling_dev_stats *stats = cdev->stats;
>>
>> + if (!stats)
>> + return;
>> +
> May I know in which case stats can be NULL?
> The only possibility I can see is that cdev->ops->get_max_state() fails
> in cooling_device_stats_setup(), right?
A few lines below, the allocation could fail.
stats = kzalloc(var, GFP_KERNEL);
if (!stats)
return;
Some drivers define themselves as a cooling device state to let the
userspace to act on their power. The screen brightness is one example
with a cdev with 1024 states, the resulting stats table to be allocated
is very big and the kzalloc is prone to fail.
> thanks,
> rui
>
>> spin_lock(&stats->lock);
>>
>> if (stats->state == new_state)
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
Powered by blists - more mailing lists