Message ID | 20240224123215.161469-5-jic23@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | IIO: Use device_for_each_child_scope() | expand |
> 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
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 --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;