diff mbox series

[v5,4/9] iio: adc: rzg2l_adc: Use device_for_each_child_node_scoped()

Message ID 20240224123215.161469-5-jic23@kernel.org (mailing list archive)
State Accepted
Headers show
Series IIO: Use device_for_each_child_scope() | expand

Commit Message

Jonathan Cameron Feb. 24, 2024, 12:32 p.m. UTC
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Switching to the _scoped() version removes the need for manual
calling of fwnode_handle_put() in the paths where the code
exits the loop early. In this case that's all in error paths.

Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/adc/rzg2l_adc.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

Comments

Prabhakar Feb. 27, 2024, 9:52 a.m. UTC | #1
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> 
> Switching to the _scoped() version removes the need for manual calling of fwnode_handle_put() in the
> paths where the code exits the loop early. In this case that's all in error paths.
> 
> Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
>  drivers/iio/adc/rzg2l_adc.c | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
> 
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Cheers,
Prabhakar

> diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c index
> 0921ff2d9b3a..cd3a7e46ea53 100644
> --- a/drivers/iio/adc/rzg2l_adc.c
> +++ b/drivers/iio/adc/rzg2l_adc.c
> @@ -302,7 +302,6 @@ static irqreturn_t rzg2l_adc_isr(int irq, void *dev_id)  static int
> rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l_adc *adc)  {
>  	struct iio_chan_spec *chan_array;
> -	struct fwnode_handle *fwnode;
>  	struct rzg2l_adc_data *data;
>  	unsigned int channel;
>  	int num_channels;
> @@ -330,17 +329,13 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
>  		return -ENOMEM;
> 
>  	i = 0;
> -	device_for_each_child_node(&pdev->dev, fwnode) {
> +	device_for_each_child_node_scoped(&pdev->dev, fwnode) {
>  		ret = fwnode_property_read_u32(fwnode, "reg", &channel);
> -		if (ret) {
> -			fwnode_handle_put(fwnode);
> +		if (ret)
>  			return ret;
> -		}
> 
> -		if (channel >= RZG2L_ADC_MAX_CHANNELS) {
> -			fwnode_handle_put(fwnode);
> +		if (channel >= RZG2L_ADC_MAX_CHANNELS)
>  			return -EINVAL;
> -		}
> 
>  		chan_array[i].type = IIO_VOLTAGE;
>  		chan_array[i].indexed = 1;
> --
> 2.44.0
Jonathan Cameron Feb. 27, 2024, 7:16 p.m. UTC | #2
On Tue, 27 Feb 2024 09:52:28 +0000
Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:

> > From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > 
> > Switching to the _scoped() version removes the need for manual calling of fwnode_handle_put() in the
> > paths where the code exits the loop early. In this case that's all in error paths.
> > 
> > Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > ---
> >  drivers/iio/adc/rzg2l_adc.c | 11 +++--------
> >  1 file changed, 3 insertions(+), 8 deletions(-)
> >   
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> 
I already picked up some of this series piecemeal so I'll keep going!

Applied to the togreg branch of iio.git and pushed out as testing for 0-day to take a look.

Thanks!

Jonathan

> Cheers,
> Prabhakar
> 
> > diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c index
> > 0921ff2d9b3a..cd3a7e46ea53 100644
> > --- a/drivers/iio/adc/rzg2l_adc.c
> > +++ b/drivers/iio/adc/rzg2l_adc.c
> > @@ -302,7 +302,6 @@ static irqreturn_t rzg2l_adc_isr(int irq, void *dev_id)  static int
> > rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l_adc *adc)  {
> >  	struct iio_chan_spec *chan_array;
> > -	struct fwnode_handle *fwnode;
> >  	struct rzg2l_adc_data *data;
> >  	unsigned int channel;
> >  	int num_channels;
> > @@ -330,17 +329,13 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
> >  		return -ENOMEM;
> > 
> >  	i = 0;
> > -	device_for_each_child_node(&pdev->dev, fwnode) {
> > +	device_for_each_child_node_scoped(&pdev->dev, fwnode) {
> >  		ret = fwnode_property_read_u32(fwnode, "reg", &channel);
> > -		if (ret) {
> > -			fwnode_handle_put(fwnode);
> > +		if (ret)
> >  			return ret;
> > -		}
> > 
> > -		if (channel >= RZG2L_ADC_MAX_CHANNELS) {
> > -			fwnode_handle_put(fwnode);
> > +		if (channel >= RZG2L_ADC_MAX_CHANNELS)
> >  			return -EINVAL;
> > -		}
> > 
> >  		chan_array[i].type = IIO_VOLTAGE;
> >  		chan_array[i].indexed = 1;
> > --
> > 2.44.0  
>
diff mbox series

Patch

diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c
index 0921ff2d9b3a..cd3a7e46ea53 100644
--- a/drivers/iio/adc/rzg2l_adc.c
+++ b/drivers/iio/adc/rzg2l_adc.c
@@ -302,7 +302,6 @@  static irqreturn_t rzg2l_adc_isr(int irq, void *dev_id)
 static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l_adc *adc)
 {
 	struct iio_chan_spec *chan_array;
-	struct fwnode_handle *fwnode;
 	struct rzg2l_adc_data *data;
 	unsigned int channel;
 	int num_channels;
@@ -330,17 +329,13 @@  static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l
 		return -ENOMEM;
 
 	i = 0;
-	device_for_each_child_node(&pdev->dev, fwnode) {
+	device_for_each_child_node_scoped(&pdev->dev, fwnode) {
 		ret = fwnode_property_read_u32(fwnode, "reg", &channel);
-		if (ret) {
-			fwnode_handle_put(fwnode);
+		if (ret)
 			return ret;
-		}
 
-		if (channel >= RZG2L_ADC_MAX_CHANNELS) {
-			fwnode_handle_put(fwnode);
+		if (channel >= RZG2L_ADC_MAX_CHANNELS)
 			return -EINVAL;
-		}
 
 		chan_array[i].type = IIO_VOLTAGE;
 		chan_array[i].indexed = 1;