linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop iteration
@ 2021-04-25 17:48 Krzysztof Kozlowski
  2021-04-25 17:48 ` [PATCH 2/2] thermal: sprd: " Krzysztof Kozlowski
  2021-04-27  8:55 ` [PATCH 1/2] thermal: imx_sc: " Jacky Bai
  0 siblings, 2 replies; 4+ messages in thread
From: Krzysztof Kozlowski @ 2021-04-25 17:48 UTC (permalink / raw)
  To: Zhang Rui, Daniel Lezcano, Amit Kucheria, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team, Orson Zhai, Baolin Wang, Chunyan Zhang, linux-pm,
	linux-arm-kernel, linux-kernel
  Cc: Krzysztof Kozlowski

Early exits from for_each_available_child_of_node() should decrement the
node reference counter.  Reported by Coccinelle:

  drivers/thermal/imx_sc_thermal.c:93:1-33: WARNING:
    Function "for_each_available_child_of_node" should have of_node_put() before return around line 97.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
---
 drivers/thermal/imx_sc_thermal.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/thermal/imx_sc_thermal.c b/drivers/thermal/imx_sc_thermal.c
index b01d28eca7ee..8d76dbfde6a9 100644
--- a/drivers/thermal/imx_sc_thermal.c
+++ b/drivers/thermal/imx_sc_thermal.c
@@ -93,6 +93,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
 	for_each_available_child_of_node(np, child) {
 		sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL);
 		if (!sensor) {
+			of_node_put(child);
 			of_node_put(sensor_np);
 			return -ENOMEM;
 		}
@@ -104,6 +105,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
 			dev_err(&pdev->dev,
 				"failed to get valid sensor resource id: %d\n",
 				ret);
+			of_node_put(child);
 			break;
 		}
 
@@ -114,6 +116,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
 		if (IS_ERR(sensor->tzd)) {
 			dev_err(&pdev->dev, "failed to register thermal zone\n");
 			ret = PTR_ERR(sensor->tzd);
+			of_node_put(child);
 			break;
 		}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] thermal: sprd: add missing of_node_put for loop iteration
  2021-04-25 17:48 [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop iteration Krzysztof Kozlowski
@ 2021-04-25 17:48 ` Krzysztof Kozlowski
  2021-04-26  8:07   ` Chunyan Zhang
  2021-04-27  8:55 ` [PATCH 1/2] thermal: imx_sc: " Jacky Bai
  1 sibling, 1 reply; 4+ messages in thread
From: Krzysztof Kozlowski @ 2021-04-25 17:48 UTC (permalink / raw)
  To: Zhang Rui, Daniel Lezcano, Amit Kucheria, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team, Orson Zhai, Baolin Wang, Chunyan Zhang, linux-pm,
	linux-arm-kernel, linux-kernel
  Cc: Krzysztof Kozlowski

Early exits from for_each_available_child_of_node() should decrement the
node reference counter.  Reported by Coccinelle:

  drivers/thermal/sprd_thermal.c:387:1-23: WARNING:
    Function "for_each_child_of_node" should have of_node_put() before goto around lines 391.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
---
 drivers/thermal/sprd_thermal.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/thermal/sprd_thermal.c b/drivers/thermal/sprd_thermal.c
index 3682edb2f466..2778971aaf03 100644
--- a/drivers/thermal/sprd_thermal.c
+++ b/drivers/thermal/sprd_thermal.c
@@ -388,6 +388,7 @@ static int sprd_thm_probe(struct platform_device *pdev)
 		sen = devm_kzalloc(&pdev->dev, sizeof(*sen), GFP_KERNEL);
 		if (!sen) {
 			ret = -ENOMEM;
+			of_node_put(sen_child);
 			goto disable_clk;
 		}
 
@@ -397,12 +398,14 @@ static int sprd_thm_probe(struct platform_device *pdev)
 		ret = of_property_read_u32(sen_child, "reg", &sen->id);
 		if (ret) {
 			dev_err(&pdev->dev, "get sensor reg failed");
+			of_node_put(sen_child);
 			goto disable_clk;
 		}
 
 		ret = sprd_thm_sensor_calibration(sen_child, thm, sen);
 		if (ret) {
 			dev_err(&pdev->dev, "efuse cal analysis failed");
+			of_node_put(sen_child);
 			goto disable_clk;
 		}
 
@@ -416,6 +419,7 @@ static int sprd_thm_probe(struct platform_device *pdev)
 			dev_err(&pdev->dev, "register thermal zone failed %d\n",
 				sen->id);
 			ret = PTR_ERR(sen->tzd);
+			of_node_put(sen_child);
 			goto disable_clk;
 		}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] thermal: sprd: add missing of_node_put for loop iteration
  2021-04-25 17:48 ` [PATCH 2/2] thermal: sprd: " Krzysztof Kozlowski
@ 2021-04-26  8:07   ` Chunyan Zhang
  0 siblings, 0 replies; 4+ messages in thread
From: Chunyan Zhang @ 2021-04-26  8:07 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Zhang Rui, Daniel Lezcano, Amit Kucheria, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team, Orson Zhai, Baolin Wang, Linux PM, Linux ARM,
	Linux Kernel Mailing List

On Mon, 26 Apr 2021 at 01:48, Krzysztof Kozlowski
<krzysztof.kozlowski@canonical.com> wrote:
>
> Early exits from for_each_available_child_of_node() should decrement the
> node reference counter.  Reported by Coccinelle:
>
>   drivers/thermal/sprd_thermal.c:387:1-23: WARNING:
>     Function "for_each_child_of_node" should have of_node_put() before goto around lines 391.
>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>

Acked-by: Chunyan Zhang <zhang.lyra@gmail.com>

Thanks for fixing this.

> ---
>  drivers/thermal/sprd_thermal.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/thermal/sprd_thermal.c b/drivers/thermal/sprd_thermal.c
> index 3682edb2f466..2778971aaf03 100644
> --- a/drivers/thermal/sprd_thermal.c
> +++ b/drivers/thermal/sprd_thermal.c
> @@ -388,6 +388,7 @@ static int sprd_thm_probe(struct platform_device *pdev)
>                 sen = devm_kzalloc(&pdev->dev, sizeof(*sen), GFP_KERNEL);
>                 if (!sen) {
>                         ret = -ENOMEM;
> +                       of_node_put(sen_child);
>                         goto disable_clk;
>                 }
>
> @@ -397,12 +398,14 @@ static int sprd_thm_probe(struct platform_device *pdev)
>                 ret = of_property_read_u32(sen_child, "reg", &sen->id);
>                 if (ret) {
>                         dev_err(&pdev->dev, "get sensor reg failed");
> +                       of_node_put(sen_child);
>                         goto disable_clk;
>                 }
>
>                 ret = sprd_thm_sensor_calibration(sen_child, thm, sen);
>                 if (ret) {
>                         dev_err(&pdev->dev, "efuse cal analysis failed");
> +                       of_node_put(sen_child);
>                         goto disable_clk;
>                 }
>
> @@ -416,6 +419,7 @@ static int sprd_thm_probe(struct platform_device *pdev)
>                         dev_err(&pdev->dev, "register thermal zone failed %d\n",
>                                 sen->id);
>                         ret = PTR_ERR(sen->tzd);
> +                       of_node_put(sen_child);
>                         goto disable_clk;
>                 }
>
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop iteration
  2021-04-25 17:48 [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop iteration Krzysztof Kozlowski
  2021-04-25 17:48 ` [PATCH 2/2] thermal: sprd: " Krzysztof Kozlowski
@ 2021-04-27  8:55 ` Jacky Bai
  1 sibling, 0 replies; 4+ messages in thread
From: Jacky Bai @ 2021-04-27  8:55 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Zhang Rui, Daniel Lezcano, Amit Kucheria,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	dl-linux-imx, Orson Zhai, Baolin Wang, Chunyan Zhang, linux-pm,
	linux-arm-kernel, linux-kernel

> Subject: [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop
> iteration
> 
> Early exits from for_each_available_child_of_node() should decrement the
> node reference counter.  Reported by Coccinelle:
> 
>   drivers/thermal/imx_sc_thermal.c:93:1-33: WARNING:
>     Function "for_each_available_child_of_node" should have of_node_put()
> before return around line 97.
> 

Reviewed-by: Jacky Bai <ping.bai@nxp.com>

BR
Jacky Bai

> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> ---
>  drivers/thermal/imx_sc_thermal.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/thermal/imx_sc_thermal.c
> b/drivers/thermal/imx_sc_thermal.c
> index b01d28eca7ee..8d76dbfde6a9 100644
> --- a/drivers/thermal/imx_sc_thermal.c
> +++ b/drivers/thermal/imx_sc_thermal.c
> @@ -93,6 +93,7 @@ static int imx_sc_thermal_probe(struct platform_device
> *pdev)
>  	for_each_available_child_of_node(np, child) {
>  		sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL);
>  		if (!sensor) {
> +			of_node_put(child);
>  			of_node_put(sensor_np);
>  			return -ENOMEM;
>  		}
> @@ -104,6 +105,7 @@ static int imx_sc_thermal_probe(struct
> platform_device *pdev)
>  			dev_err(&pdev->dev,
>  				"failed to get valid sensor resource id: %d\n",
>  				ret);
> +			of_node_put(child);
>  			break;
>  		}
> 
> @@ -114,6 +116,7 @@ static int imx_sc_thermal_probe(struct
> platform_device *pdev)
>  		if (IS_ERR(sensor->tzd)) {
>  			dev_err(&pdev->dev, "failed to register thermal zone\n");
>  			ret = PTR_ERR(sensor->tzd);
> +			of_node_put(child);
>  			break;
>  		}
> 
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-04-27  8:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-25 17:48 [PATCH 1/2] thermal: imx_sc: add missing of_node_put for loop iteration Krzysztof Kozlowski
2021-04-25 17:48 ` [PATCH 2/2] thermal: sprd: " Krzysztof Kozlowski
2021-04-26  8:07   ` Chunyan Zhang
2021-04-27  8:55 ` [PATCH 1/2] thermal: imx_sc: " Jacky Bai

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