Re: [PATCH] thermal: of: Fix logic in thermal_of_should_bind

From: Rafael J. Wysocki
Date: Wed Feb 19 2025 - 16:41:17 EST


On Wed, Feb 19, 2025 at 8:06 AM Yu-Che Cheng <giver@xxxxxxxxxxxx> wrote:
>
> The current thermal_of_should_bind will stop iterating cooling-maps on
> the first matched trip point, leading to subsequent cooling devices
> binding to the same trip point failing to find the cooling spec.
>
> The iteration should continue enumerating subsequent cooling-maps if the
> target cooling device is not found.
>
> Fix the logic to break only when a matched cooling device is found.

OK, but ->

> Fixes: 94c6110b0b13 ("thermal/of: Use the .should_bind() thermal zone callback")
> Signed-off-by: Yu-Che Cheng <giver@xxxxxxxxxxxx>
> ---
> drivers/thermal/thermal_of.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index 5ab4ce4daaeb..69c530e38574 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -312,7 +312,8 @@ static bool thermal_of_should_bind(struct thermal_zone_device *tz,
> break;

-> I'd prefer to do a jump from here, that is

- break;
+ goto put_cm_np;
> }
>
> - break;

and remove the break statement above altogether.

> + if (result)
> + break;
> }
>

And of course the label needs to be added too:

+put_cm_np:
> of_node_put(cm_np);
>
> ---