2022-05-17 13:02:34

by Jialin Zhang

[permalink] [raw]
Subject: [PATCH] iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()

fwnode_handle_put() should be used when terminating
device_for_each_child_node() iteration with break or
return to prevent stale device node references from
being left behind.

Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Jialin Zhang <[email protected]>
---
drivers/iio/adc/rzg2l_adc.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c
index 7585144b9715..5b09a93fdf34 100644
--- a/drivers/iio/adc/rzg2l_adc.c
+++ b/drivers/iio/adc/rzg2l_adc.c
@@ -334,11 +334,15 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
i = 0;
device_for_each_child_node(&pdev->dev, fwnode) {
ret = fwnode_property_read_u32(fwnode, "reg", &channel);
- if (ret)
+ if (ret) {
+ fwnode_handle_put(fwnode);
return ret;
+ }

- if (channel >= RZG2L_ADC_MAX_CHANNELS)
+ if (channel >= RZG2L_ADC_MAX_CHANNELS) {
+ fwnode_handle_put(fwnode);
return -EINVAL;
+ }

chan_array[i].type = IIO_VOLTAGE;
chan_array[i].indexed = 1;
--
2.25.1



2022-05-17 22:24:23

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()

On Tue, May 17, 2022 at 6:44 AM Jialin Zhang <[email protected]> wrote:
> fwnode_handle_put() should be used when terminating
> device_for_each_child_node() iteration with break or
> return to prevent stale device node references from
> being left behind.
>
> Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Jialin Zhang <[email protected]>

Reviewed-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2022-05-18 19:40:26

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()

On Tue, May 17, 2022 at 5:44 AM Jialin Zhang <[email protected]> wrote:
>
> fwnode_handle_put() should be used when terminating
> device_for_each_child_node() iteration with break or
> return to prevent stale device node references from
> being left behind.
>
> Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Jialin Zhang <[email protected]>
> ---
> drivers/iio/adc/rzg2l_adc.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
Reviewed-by: Lad Prabhakar <[email protected]>

Cheers,
Prabhakar

> diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c
> index 7585144b9715..5b09a93fdf34 100644
> --- a/drivers/iio/adc/rzg2l_adc.c
> +++ b/drivers/iio/adc/rzg2l_adc.c
> @@ -334,11 +334,15 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
> i = 0;
> device_for_each_child_node(&pdev->dev, fwnode) {
> ret = fwnode_property_read_u32(fwnode, "reg", &channel);
> - if (ret)
> + if (ret) {
> + fwnode_handle_put(fwnode);
> return ret;
> + }
>
> - if (channel >= RZG2L_ADC_MAX_CHANNELS)
> + if (channel >= RZG2L_ADC_MAX_CHANNELS) {
> + fwnode_handle_put(fwnode);
> return -EINVAL;
> + }
>
> chan_array[i].type = IIO_VOLTAGE;
> chan_array[i].indexed = 1;
> --
> 2.25.1
>

2022-05-23 06:49:20

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: rzg2l_adc: add missing fwnode_handle_put() in rzg2l_adc_parse_properties()

On Tue, 17 May 2022 11:35:26 +0800
Jialin Zhang <[email protected]> wrote:

> fwnode_handle_put() should be used when terminating
> device_for_each_child_node() iteration with break or
> return to prevent stale device node references from
> being left behind.
>
> Fixes: d484c21bacfa ("iio: adc: Add driver for Renesas RZ/G2L A/D converter")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Jialin Zhang <[email protected]>
Applied to the fixes-togreg branch of iio.git.

Thanks,

Jonathan

> ---
> drivers/iio/adc/rzg2l_adc.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c
> index 7585144b9715..5b09a93fdf34 100644
> --- a/drivers/iio/adc/rzg2l_adc.c
> +++ b/drivers/iio/adc/rzg2l_adc.c
> @@ -334,11 +334,15 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
> i = 0;
> device_for_each_child_node(&pdev->dev, fwnode) {
> ret = fwnode_property_read_u32(fwnode, "reg", &channel);
> - if (ret)
> + if (ret) {
> + fwnode_handle_put(fwnode);
> return ret;
> + }
>
> - if (channel >= RZG2L_ADC_MAX_CHANNELS)
> + if (channel >= RZG2L_ADC_MAX_CHANNELS) {
> + fwnode_handle_put(fwnode);
> return -EINVAL;
> + }
>
> chan_array[i].type = IIO_VOLTAGE;
> chan_array[i].indexed = 1;