Re: [PATCH 3/3] thermal: core: fix: Check return code of the ->get_max_state() callback

Eduardo Valentin
2014-10-02T22:24:55Z

On Wed, Sep 24, 2014 at 10:27:12AM +0200, Lukasz Majewski wrote:
> Without this check it was possible to execute cooling device binding code
> even when wrong max cooling state was read.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>

Acked-by: Eduardo Valentin <edubezval@gmail.com>

Rui, are you taking these patches? Do you prefer me to collect them?

Cheers

Eduardo

> ---
> drivers/thermal/thermal_core.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 747618a..8a4dc35 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -928,7 +928,7 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
> struct thermal_zone_device *pos1;
> struct thermal_cooling_device *pos2;
> unsigned long max_state = 0;
> - int result;
> + int result, ret;
>
> if (trip >= tz->trips || (trip < 0 && trip != THERMAL_TRIPS_NONE))
> return -EINVAL;
> @@ -945,7 +945,9 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
> if (tz != pos1 || cdev != pos2)
> return -EINVAL;
>
> - cdev->ops->get_max_state(cdev, &max_state);
> + ret = cdev->ops->get_max_state(cdev, &max_state);
> + if (ret)
> + return ret;
>
> /* lower default 0, upper default max_state */
> lower = lower == THERMAL_NO_LIMIT ? 0 : lower;
> --
> 2.0.0.rc2
>