> From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > 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@xxxxxxxxxxxxxx> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- > drivers/iio/adc/rzg2l_adc.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> 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