On Sat, 30 Mar 2024 18:52:59 +0000 Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > 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. > > A slightly less convincing usecase than many as all the failure paths > are wrapped up in a call to a per fwnode_handle utility function. > The complexity in that function is sufficient that it makes sense to > factor it out even if it this new auto cleanup would enable simpler > returns if the code was inline at the call site. Hence I've left it alone. > > Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> I'm not sure why I didn't pick this one up before now given it has an RB from Dmitry. Applied. Thanks, Jonathan > --- > drivers/iio/adc/qcom-spmi-adc5.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/adc/qcom-spmi-adc5.c b/drivers/iio/adc/qcom-spmi-adc5.c > index b6b612d733ff..9b69f40beed8 100644 > --- a/drivers/iio/adc/qcom-spmi-adc5.c > +++ b/drivers/iio/adc/qcom-spmi-adc5.c > @@ -825,7 +825,6 @@ static int adc5_get_fw_data(struct adc5_chip *adc) > const struct adc5_channels *adc_chan; > struct iio_chan_spec *iio_chan; > struct adc5_channel_prop prop, *chan_props; > - struct fwnode_handle *child; > unsigned int index = 0; > int ret; > > @@ -849,12 +848,10 @@ static int adc5_get_fw_data(struct adc5_chip *adc) > if (!adc->data) > adc->data = &adc5_data_pmic; > > - device_for_each_child_node(adc->dev, child) { > + device_for_each_child_node_scoped(adc->dev, child) { > ret = adc5_get_fw_channel_data(adc, &prop, child, adc->data); > - if (ret) { > - fwnode_handle_put(child); > + if (ret) > return ret; > - } > > prop.scale_fn_type = > adc->data->adc_chans[prop.channel].scale_fn_type;