All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen-Yu Tsai <wenst@chromium.org>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Zhang Rui <rui.zhang@intel.com>,
	Lukasz Luba <lukasz.luba@arm.com>,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: Re: [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
Date: Thu, 15 Aug 2024 12:54:19 +0800	[thread overview]
Message-ID: <20240815045419.GC255011@google.com> (raw)
In-Reply-To: <20240814195823.437597-3-krzysztof.kozlowski@linaro.org>

On Wed, Aug 14, 2024 at 09:58:23PM +0200, Krzysztof Kozlowski wrote:
> Terminating for_each_available_child_of_node() loop requires dropping OF
> node reference, so bailing out on errors misses this.  Solve the OF node
> reference leak with scoped for_each_available_child_of_node_scoped().
> 
> Fixes: 3fd6d6e2b4e8 ("thermal/of: Rework the thermal device tree initialization")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>

> ---
>  drivers/thermal/thermal_of.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index b08a9b64718d..1f252692815a 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -184,14 +184,14 @@ static struct device_node *of_thermal_zone_find(struct device_node *sensor, int
>  	 * Search for each thermal zone, a defined sensor
>  	 * corresponding to the one passed as parameter
>  	 */
> -	for_each_available_child_of_node(np, tz) {
> +	for_each_available_child_of_node_scoped(np, child) {
>  
>  		int count, i;
>  
> -		count = of_count_phandle_with_args(tz, "thermal-sensors",
> +		count = of_count_phandle_with_args(child, "thermal-sensors",
>  						   "#thermal-sensor-cells");
>  		if (count <= 0) {
> -			pr_err("%pOFn: missing thermal sensor\n", tz);
> +			pr_err("%pOFn: missing thermal sensor\n", child);
>  			tz = ERR_PTR(-EINVAL);
>  			goto out;
>  		}
> @@ -200,18 +200,19 @@ static struct device_node *of_thermal_zone_find(struct device_node *sensor, int
>  
>  			int ret;
>  
> -			ret = of_parse_phandle_with_args(tz, "thermal-sensors",
> +			ret = of_parse_phandle_with_args(child, "thermal-sensors",
>  							 "#thermal-sensor-cells",
>  							 i, &sensor_specs);
>  			if (ret < 0) {
> -				pr_err("%pOFn: Failed to read thermal-sensors cells: %d\n", tz, ret);
> +				pr_err("%pOFn: Failed to read thermal-sensors cells: %d\n", child, ret);
>  				tz = ERR_PTR(ret);
>  				goto out;
>  			}
>  
>  			if ((sensor == sensor_specs.np) && id == (sensor_specs.args_count ?
>  								  sensor_specs.args[0] : 0)) {
> -				pr_debug("sensor %pOFn id=%d belongs to %pOFn\n", sensor, id, tz);
> +				pr_debug("sensor %pOFn id=%d belongs to %pOFn\n", sensor, id, child);
> +				tz = no_free_ptr(child);
>  				goto out;
>  			}
>  		}
> -- 
> 2.43.0
> 

  reply	other threads:[~2024-08-15  4:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-14 19:58 [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Krzysztof Kozlowski
2024-08-14 19:58 ` [PATCH 2/3] thermal: of: Fix OF node leak in thermal_of_zone_register() Krzysztof Kozlowski
2024-08-15  4:51   ` Chen-Yu Tsai
2024-08-22 16:10   ` Daniel Lezcano
2024-08-14 19:58 ` [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths Krzysztof Kozlowski
2024-08-15  4:54   ` Chen-Yu Tsai [this message]
2024-08-22 16:11   ` Daniel Lezcano
2024-08-22 19:05     ` Rafael J. Wysocki
2024-08-15  4:48 ` [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Chen-Yu Tsai
2024-08-15  6:48 ` Markus Elfring
2024-08-19 10:12 ` Daniel Lezcano
2024-08-19 13:20   ` Rafael J. Wysocki
2024-08-19 13:22     ` Daniel Lezcano
2024-08-19 13:31       ` Rafael J. Wysocki
2024-08-22 15:54         ` Rafael J. Wysocki
2024-08-22 16:09           ` Daniel Lezcano
2024-08-22 16:09 ` Daniel Lezcano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240815045419.GC255011@google.com \
    --to=wenst@chromium.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=rafael@kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.