2022-02-28 11:25:35

by Nicolas Cavallari

[permalink] [raw]
Subject: [PATCH] thermal: genetlink: Fix TZ_GET_TRIP NULL pointer dereference

Do not call get_trip_hyst() if the thermal zone does not define one.

Signed-off-by: Nicolas Cavallari <[email protected]>
---
drivers/thermal/thermal_netlink.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_netlink.c b/drivers/thermal/thermal_netlink.c
index a16dd4d5d710..73e68cce292e 100644
--- a/drivers/thermal/thermal_netlink.c
+++ b/drivers/thermal/thermal_netlink.c
@@ -419,11 +419,12 @@ static int thermal_genl_cmd_tz_get_trip(struct param *p)
for (i = 0; i < tz->trips; i++) {

enum thermal_trip_type type;
- int temp, hyst;
+ int temp, hyst = 0;

tz->ops->get_trip_type(tz, i, &type);
tz->ops->get_trip_temp(tz, i, &temp);
- tz->ops->get_trip_hyst(tz, i, &hyst);
+ if (tz->ops->get_trip_hyst)
+ tz->ops->get_trip_hyst(tz, i, &hyst);

if (nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_ID, i) ||
nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_TYPE, type) ||
--
2.35.1


2022-03-01 17:58:50

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] thermal: genetlink: Fix TZ_GET_TRIP NULL pointer dereference

On Mon, Feb 28, 2022 at 12:04 PM Nicolas Cavallari
<[email protected]> wrote:
>
> Do not call get_trip_hyst() if the thermal zone does not define one.
>
> Signed-off-by: Nicolas Cavallari <[email protected]>
> ---
> drivers/thermal/thermal_netlink.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/thermal_netlink.c b/drivers/thermal/thermal_netlink.c
> index a16dd4d5d710..73e68cce292e 100644
> --- a/drivers/thermal/thermal_netlink.c
> +++ b/drivers/thermal/thermal_netlink.c
> @@ -419,11 +419,12 @@ static int thermal_genl_cmd_tz_get_trip(struct param *p)
> for (i = 0; i < tz->trips; i++) {
>
> enum thermal_trip_type type;
> - int temp, hyst;
> + int temp, hyst = 0;
>
> tz->ops->get_trip_type(tz, i, &type);
> tz->ops->get_trip_temp(tz, i, &temp);
> - tz->ops->get_trip_hyst(tz, i, &hyst);
> + if (tz->ops->get_trip_hyst)
> + tz->ops->get_trip_hyst(tz, i, &hyst);
>
> if (nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_ID, i) ||
> nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_TYPE, type) ||
> --

Applied, but I think this needs to go into 5.17-rc, doesn't it?

Daniel?

2022-03-02 07:41:15

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH] thermal: genetlink: Fix TZ_GET_TRIP NULL pointer dereference

On 01/03/2022 16:14, Rafael J. Wysocki wrote:
> On Mon, Feb 28, 2022 at 12:04 PM Nicolas Cavallari
> <[email protected]> wrote:
>>
>> Do not call get_trip_hyst() if the thermal zone does not define one.
>>
>> Signed-off-by: Nicolas Cavallari <[email protected]>
>> ---
>> drivers/thermal/thermal_netlink.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/thermal/thermal_netlink.c b/drivers/thermal/thermal_netlink.c
>> index a16dd4d5d710..73e68cce292e 100644
>> --- a/drivers/thermal/thermal_netlink.c
>> +++ b/drivers/thermal/thermal_netlink.c
>> @@ -419,11 +419,12 @@ static int thermal_genl_cmd_tz_get_trip(struct param *p)
>> for (i = 0; i < tz->trips; i++) {
>>
>> enum thermal_trip_type type;
>> - int temp, hyst;
>> + int temp, hyst = 0;
>>
>> tz->ops->get_trip_type(tz, i, &type);
>> tz->ops->get_trip_temp(tz, i, &temp);
>> - tz->ops->get_trip_hyst(tz, i, &hyst);
>> + if (tz->ops->get_trip_hyst)
>> + tz->ops->get_trip_hyst(tz, i, &hyst);
>>
>> if (nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_ID, i) ||
>> nla_put_u32(msg, THERMAL_GENL_ATTR_TZ_TRIP_TYPE, type) ||
>> --
>
> Applied, but I think this needs to go into 5.17-rc, doesn't it?

Yes, correct


--
<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