* [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
@ 2024-08-14 19:58 Krzysztof Kozlowski
2024-08-14 19:58 ` [PATCH 2/3] thermal: of: Fix OF node leak in thermal_of_zone_register() Krzysztof Kozlowski
` (5 more replies)
0 siblings, 6 replies; 17+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-14 19:58 UTC (permalink / raw)
To: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: Krzysztof Kozlowski, stable
Terminating for_each_child_of_node() loop requires dropping OF node
reference, so bailing out after thermal_of_populate_trip() error misses
this. Solve the OF node reference leak with scoped
for_each_child_of_node_scoped().
Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
Cc: <stable@vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/thermal/thermal_of.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index aa34b6e82e26..30f8d6e70484 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -125,7 +125,7 @@ static int thermal_of_populate_trip(struct device_node *np,
static struct thermal_trip *thermal_of_trips_init(struct device_node *np, int *ntrips)
{
struct thermal_trip *tt;
- struct device_node *trips, *trip;
+ struct device_node *trips;
int ret, count;
trips = of_get_child_by_name(np, "trips");
@@ -150,7 +150,7 @@ static struct thermal_trip *thermal_of_trips_init(struct device_node *np, int *n
*ntrips = count;
count = 0;
- for_each_child_of_node(trips, trip) {
+ for_each_child_of_node_scoped(trips, trip) {
ret = thermal_of_populate_trip(trip, &tt[count++]);
if (ret)
goto out_kfree;
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/3] thermal: of: Fix OF node leak in thermal_of_zone_register()
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 ` 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
` (4 subsequent siblings)
5 siblings, 2 replies; 17+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-14 19:58 UTC (permalink / raw)
To: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: Krzysztof Kozlowski, stable
thermal_of_zone_register() calls of_thermal_zone_find() which will
iterate over OF nodes with for_each_available_child_of_node() to find
matching thermal zone node. When it finds such, it exits the loop and
returns the node. Prematurely ending for_each_available_child_of_node()
loops requires dropping OF node reference, thus success of
of_thermal_zone_find() means that caller must drop the reference.
Fixes: 3fd6d6e2b4e8 ("thermal/of: Rework the thermal device tree initialization")
Cc: <stable@vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
drivers/thermal/thermal_of.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index 30f8d6e70484..b08a9b64718d 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -491,7 +491,8 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
trips = thermal_of_trips_init(np, &ntrips);
if (IS_ERR(trips)) {
pr_err("Failed to find trip points for %pOFn id=%d\n", sensor, id);
- return ERR_CAST(trips);
+ ret = PTR_ERR(trips);
+ goto out_of_node_put;
}
ret = thermal_of_monitor_init(np, &delay, &pdelay);
@@ -519,6 +520,7 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
goto out_kfree_trips;
}
+ of_node_put(np);
kfree(trips);
ret = thermal_zone_device_enable(tz);
@@ -533,6 +535,8 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
out_kfree_trips:
kfree(trips);
+out_of_node_put:
+ of_node_put(np);
return ERR_PTR(ret);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
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-14 19:58 ` Krzysztof Kozlowski
2024-08-15 4:54 ` Chen-Yu Tsai
2024-08-22 16:11 ` Daniel Lezcano
2024-08-15 4:48 ` [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Chen-Yu Tsai
` (3 subsequent siblings)
5 siblings, 2 replies; 17+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-14 19:58 UTC (permalink / raw)
To: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: Krzysztof Kozlowski, stable
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>
---
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
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
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-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:48 ` Chen-Yu Tsai
2024-08-15 6:48 ` Markus Elfring
` (2 subsequent siblings)
5 siblings, 0 replies; 17+ messages in thread
From: Chen-Yu Tsai @ 2024-08-15 4:48 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel, stable
On Wed, Aug 14, 2024 at 09:58:21PM +0200, Krzysztof Kozlowski wrote:
> Terminating for_each_child_of_node() loop requires dropping OF node
> reference, so bailing out after thermal_of_populate_trip() error misses
> this. Solve the OF node reference leak with scoped
> for_each_child_of_node_scoped().
>
> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> 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 | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index aa34b6e82e26..30f8d6e70484 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -125,7 +125,7 @@ static int thermal_of_populate_trip(struct device_node *np,
> static struct thermal_trip *thermal_of_trips_init(struct device_node *np, int *ntrips)
> {
> struct thermal_trip *tt;
> - struct device_node *trips, *trip;
> + struct device_node *trips;
> int ret, count;
>
> trips = of_get_child_by_name(np, "trips");
> @@ -150,7 +150,7 @@ static struct thermal_trip *thermal_of_trips_init(struct device_node *np, int *n
> *ntrips = count;
>
> count = 0;
> - for_each_child_of_node(trips, trip) {
> + for_each_child_of_node_scoped(trips, trip) {
> ret = thermal_of_populate_trip(trip, &tt[count++]);
> if (ret)
> goto out_kfree;
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/3] thermal: of: Fix OF node leak in thermal_of_zone_register()
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
1 sibling, 0 replies; 17+ messages in thread
From: Chen-Yu Tsai @ 2024-08-15 4:51 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel, stable
On Wed, Aug 14, 2024 at 09:58:22PM +0200, Krzysztof Kozlowski wrote:
> thermal_of_zone_register() calls of_thermal_zone_find() which will
> iterate over OF nodes with for_each_available_child_of_node() to find
> matching thermal zone node. When it finds such, it exits the loop and
> returns the node. Prematurely ending for_each_available_child_of_node()
> loops requires dropping OF node reference, thus success of
> of_thermal_zone_find() means that caller must drop the reference.
>
> 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 | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index 30f8d6e70484..b08a9b64718d 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -491,7 +491,8 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
> trips = thermal_of_trips_init(np, &ntrips);
> if (IS_ERR(trips)) {
> pr_err("Failed to find trip points for %pOFn id=%d\n", sensor, id);
> - return ERR_CAST(trips);
> + ret = PTR_ERR(trips);
> + goto out_of_node_put;
> }
>
> ret = thermal_of_monitor_init(np, &delay, &pdelay);
> @@ -519,6 +520,7 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
> goto out_kfree_trips;
> }
>
> + of_node_put(np);
> kfree(trips);
>
> ret = thermal_zone_device_enable(tz);
> @@ -533,6 +535,8 @@ static struct thermal_zone_device *thermal_of_zone_register(struct device_node *
>
> out_kfree_trips:
> kfree(trips);
> +out_of_node_put:
> + of_node_put(np);
>
> return ERR_PTR(ret);
> }
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
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
2024-08-22 16:11 ` Daniel Lezcano
1 sibling, 0 replies; 17+ messages in thread
From: Chen-Yu Tsai @ 2024-08-15 4:54 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel, stable
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
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-14 19:58 [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Krzysztof Kozlowski
` (2 preceding siblings ...)
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-22 16:09 ` Daniel Lezcano
5 siblings, 0 replies; 17+ messages in thread
From: Markus Elfring @ 2024-08-15 6:48 UTC (permalink / raw)
To: Krzysztof Kozlowski, linux-pm, Daniel Lezcano, Lukasz Luba,
Rafael J. Wysocki, Zhang Rui
Cc: stable, LKML, Chen-Yu Tsai
> Terminating for_each_child_of_node() loop requires dropping OF node
…
Can a cover letter be helpful for such patch series?
Regards,
Markus
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-14 19:58 [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Krzysztof Kozlowski
` (3 preceding siblings ...)
2024-08-15 6:48 ` Markus Elfring
@ 2024-08-19 10:12 ` Daniel Lezcano
2024-08-19 13:20 ` Rafael J. Wysocki
2024-08-22 16:09 ` Daniel Lezcano
5 siblings, 1 reply; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-19 10:12 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rafael J. Wysocki, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: stable
On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> Terminating for_each_child_of_node() loop requires dropping OF node
> reference, so bailing out after thermal_of_populate_trip() error misses
> this. Solve the OF node reference leak with scoped
> for_each_child_of_node_scoped().
>
> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
Applied, thanks for the fixes
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-19 10:12 ` Daniel Lezcano
@ 2024-08-19 13:20 ` Rafael J. Wysocki
2024-08-19 13:22 ` Daniel Lezcano
0 siblings, 1 reply; 17+ messages in thread
From: Rafael J. Wysocki @ 2024-08-19 13:20 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Krzysztof Kozlowski, Rafael J. Wysocki, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel, stable
On Mon, Aug 19, 2024 at 12:12 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
> On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> > Terminating for_each_child_of_node() loop requires dropping OF node
> > reference, so bailing out after thermal_of_populate_trip() error misses
> > this. Solve the OF node reference leak with scoped
> > for_each_child_of_node_scoped().
> >
> > Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> > Cc: <stable@vger.kernel.org>
> > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> > ---
>
> Applied, thanks for the fixes
Is there a place from which I can pull these?
It would be good to include them into 6.11 as they are -stable material.
Alternatively, I can pick them up from the list.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-19 13:20 ` Rafael J. Wysocki
@ 2024-08-19 13:22 ` Daniel Lezcano
2024-08-19 13:31 ` Rafael J. Wysocki
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-19 13:22 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Krzysztof Kozlowski, Zhang Rui, Lukasz Luba, linux-pm,
linux-kernel, stable
On 19/08/2024 15:20, Rafael J. Wysocki wrote:
> On Mon, Aug 19, 2024 at 12:12 PM Daniel Lezcano
> <daniel.lezcano@linaro.org> wrote:
>>
>> On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
>>> Terminating for_each_child_of_node() loop requires dropping OF node
>>> reference, so bailing out after thermal_of_populate_trip() error misses
>>> this. Solve the OF node reference leak with scoped
>>> for_each_child_of_node_scoped().
>>>
>>> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
>>> Cc: <stable@vger.kernel.org>
>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>> ---
>>
>> Applied, thanks for the fixes
>
> Is there a place from which I can pull these?
>
> It would be good to include them into 6.11 as they are -stable material.
>
> Alternatively, I can pick them up from the list.
I'll send a PR for fixes only. Let me double check if there are other
fixes to go along with those
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-19 13:22 ` Daniel Lezcano
@ 2024-08-19 13:31 ` Rafael J. Wysocki
2024-08-22 15:54 ` Rafael J. Wysocki
0 siblings, 1 reply; 17+ messages in thread
From: Rafael J. Wysocki @ 2024-08-19 13:31 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Rafael J. Wysocki, Krzysztof Kozlowski, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel, stable
On Mon, Aug 19, 2024 at 3:22 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
> On 19/08/2024 15:20, Rafael J. Wysocki wrote:
> > On Mon, Aug 19, 2024 at 12:12 PM Daniel Lezcano
> > <daniel.lezcano@linaro.org> wrote:
> >>
> >> On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> >>> Terminating for_each_child_of_node() loop requires dropping OF node
> >>> reference, so bailing out after thermal_of_populate_trip() error misses
> >>> this. Solve the OF node reference leak with scoped
> >>> for_each_child_of_node_scoped().
> >>>
> >>> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> >>> Cc: <stable@vger.kernel.org>
> >>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> >>> ---
> >>
> >> Applied, thanks for the fixes
> >
> > Is there a place from which I can pull these?
> >
> > It would be good to include them into 6.11 as they are -stable material.
> >
> > Alternatively, I can pick them up from the list.
>
> I'll send a PR for fixes only. Let me double check if there are other
> fixes to go along with those
Sure, thanks!
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-19 13:31 ` Rafael J. Wysocki
@ 2024-08-22 15:54 ` Rafael J. Wysocki
2024-08-22 16:09 ` Daniel Lezcano
0 siblings, 1 reply; 17+ messages in thread
From: Rafael J. Wysocki @ 2024-08-22 15:54 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Krzysztof Kozlowski, Zhang Rui, Lukasz Luba, linux-pm,
linux-kernel
On Mon, Aug 19, 2024 at 3:31 PM Rafael J. Wysocki <rafael@kernel.org> wrote:
>
> On Mon, Aug 19, 2024 at 3:22 PM Daniel Lezcano
> <daniel.lezcano@linaro.org> wrote:
> >
> > On 19/08/2024 15:20, Rafael J. Wysocki wrote:
> > > On Mon, Aug 19, 2024 at 12:12 PM Daniel Lezcano
> > > <daniel.lezcano@linaro.org> wrote:
> > >>
> > >> On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> > >>> Terminating for_each_child_of_node() loop requires dropping OF node
> > >>> reference, so bailing out after thermal_of_populate_trip() error misses
> > >>> this. Solve the OF node reference leak with scoped
> > >>> for_each_child_of_node_scoped().
> > >>>
> > >>> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> > >>> Cc: <stable@vger.kernel.org>
> > >>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> > >>> ---
> > >>
> > >> Applied, thanks for the fixes
> > >
> > > Is there a place from which I can pull these?
> > >
> > > It would be good to include them into 6.11 as they are -stable material.
> > >
> > > Alternatively, I can pick them up from the list.
> >
> > I'll send a PR for fixes only. Let me double check if there are other
> > fixes to go along with those
>
> Sure, thanks!
Sorry for pressing, but it would be good to get this material into -rc5.
I can still pick up the patches, I don't believe they are controversial.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-22 15:54 ` Rafael J. Wysocki
@ 2024-08-22 16:09 ` Daniel Lezcano
0 siblings, 0 replies; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-22 16:09 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Krzysztof Kozlowski, Zhang Rui, Lukasz Luba, linux-pm,
linux-kernel
On 22/08/2024 17:54, Rafael J. Wysocki wrote:
> On Mon, Aug 19, 2024 at 3:31 PM Rafael J. Wysocki <rafael@kernel.org> wrote:
>>
>> On Mon, Aug 19, 2024 at 3:22 PM Daniel Lezcano
>> <daniel.lezcano@linaro.org> wrote:
>>>
>>> On 19/08/2024 15:20, Rafael J. Wysocki wrote:
>>>> On Mon, Aug 19, 2024 at 12:12 PM Daniel Lezcano
>>>> <daniel.lezcano@linaro.org> wrote:
>>>>>
>>>>> On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
>>>>>> Terminating for_each_child_of_node() loop requires dropping OF node
>>>>>> reference, so bailing out after thermal_of_populate_trip() error misses
>>>>>> this. Solve the OF node reference leak with scoped
>>>>>> for_each_child_of_node_scoped().
>>>>>>
>>>>>> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
>>>>>> Cc: <stable@vger.kernel.org>
>>>>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>>>>> ---
>>>>>
>>>>> Applied, thanks for the fixes
>>>>
>>>> Is there a place from which I can pull these?
>>>>
>>>> It would be good to include them into 6.11 as they are -stable material.
>>>>
>>>> Alternatively, I can pick them up from the list.
>>>
>>> I'll send a PR for fixes only. Let me double check if there are other
>>> fixes to go along with those
>>
>> Sure, thanks!
>
> Sorry for pressing, but it would be good to get this material into -rc5.
>
> I can still pick up the patches, I don't believe they are controversial.
Ok, feel free to pick them. Give me a few minutes to add my tags
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path
2024-08-14 19:58 [PATCH 1/3] thermal: of: Fix OF node leak in thermal_of_trips_init() error path Krzysztof Kozlowski
` (4 preceding siblings ...)
2024-08-19 10:12 ` Daniel Lezcano
@ 2024-08-22 16:09 ` Daniel Lezcano
5 siblings, 0 replies; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-22 16:09 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rafael J. Wysocki, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: stable
On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> Terminating for_each_child_of_node() loop requires dropping OF node
> reference, so bailing out after thermal_of_populate_trip() error misses
> this. Solve the OF node reference leak with scoped
> for_each_child_of_node_scoped().
>
> Fixes: d0c75fa2c17f ("thermal/of: Initialize trip points separately")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/3] thermal: of: Fix OF node leak in thermal_of_zone_register()
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
1 sibling, 0 replies; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-22 16:10 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rafael J. Wysocki, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: stable
On 14/08/2024 21:58, Krzysztof Kozlowski wrote:
> thermal_of_zone_register() calls of_thermal_zone_find() which will
> iterate over OF nodes with for_each_available_child_of_node() to find
> matching thermal zone node. When it finds such, it exits the loop and
> returns the node. Prematurely ending for_each_available_child_of_node()
> loops requires dropping OF node reference, thus success of
> of_thermal_zone_find() means that caller must drop the reference.
>
> 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: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
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
@ 2024-08-22 16:11 ` Daniel Lezcano
2024-08-22 19:05 ` Rafael J. Wysocki
1 sibling, 1 reply; 17+ messages in thread
From: Daniel Lezcano @ 2024-08-22 16:11 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rafael J. Wysocki, Zhang Rui, Lukasz Luba,
linux-pm, linux-kernel
Cc: stable
On 14/08/2024 21:58, 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: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<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
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
2024-08-22 16:11 ` Daniel Lezcano
@ 2024-08-22 19:05 ` Rafael J. Wysocki
0 siblings, 0 replies; 17+ messages in thread
From: Rafael J. Wysocki @ 2024-08-22 19:05 UTC (permalink / raw)
To: Daniel Lezcano, Krzysztof Kozlowski
Cc: Rafael J. Wysocki, Zhang Rui, Lukasz Luba, linux-pm, linux-kernel,
stable
On Thu, Aug 22, 2024 at 6:12 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
> On 14/08/2024 21:58, 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: Daniel Lezcano <daniel.lezcano@linaro.org>
Applied along with the rest of the series as fixes for 6.11-rc, thanks!
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-08-22 19:05 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).