Message ID | 20240330185305.1319844-3-jic23@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | IIO: Use device_for_each_child_scope() | expand |
On Sat, 30 Mar 2024 18:52:59 +0000 Jonathan Cameron <jic23@kernel.org> 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. > > 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@somainline.org> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> 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;
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;