Message ID | 20240217164249.921878-13-jic23@kernel.org |
---|---|
State | New |
Headers | show |
Series | device property / IIO: Use cleanup.h magic for fwnode_handle_put() handling. | expand |
On Sat, 2024-02-17 at 16:42 +0000, Jonathan Cameron 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. > > The use of fwnode_for_each_available_child_node() here is assumed > to have been down to a false assumption that device_for_each_child_node() > doesn't check avaialble - so this transition to the scoped > device_for_each_child_node_scoped() is equivalent. > > Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- Reviewed-by: Nuno Sa <nuno.sa@analog.com> > drivers/iio/addac/ad74413r.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/drivers/iio/addac/ad74413r.c b/drivers/iio/addac/ad74413r.c > index 7af3e4b8fe3b..cd26a16dc0ff 100644 > --- a/drivers/iio/addac/ad74413r.c > +++ b/drivers/iio/addac/ad74413r.c > @@ -1255,21 +1255,15 @@ static int ad74413r_parse_channel_config(struct > iio_dev *indio_dev, > static int ad74413r_parse_channel_configs(struct iio_dev *indio_dev) > { > struct ad74413r_state *st = iio_priv(indio_dev); > - struct fwnode_handle *channel_node = NULL; > int ret; > > - fwnode_for_each_available_child_node(dev_fwnode(st->dev), > channel_node) { > + device_for_each_child_node_scoped(st->dev, channel_node) { > ret = ad74413r_parse_channel_config(indio_dev, channel_node); > if (ret) > - goto put_channel_node; > + return ret; > } > > return 0; > - > -put_channel_node: > - fwnode_handle_put(channel_node); > - > - return ret; > } > > static int ad74413r_setup_channels(struct iio_dev *indio_dev)
diff --git a/drivers/iio/addac/ad74413r.c b/drivers/iio/addac/ad74413r.c index 7af3e4b8fe3b..cd26a16dc0ff 100644 --- a/drivers/iio/addac/ad74413r.c +++ b/drivers/iio/addac/ad74413r.c @@ -1255,21 +1255,15 @@ static int ad74413r_parse_channel_config(struct iio_dev *indio_dev, static int ad74413r_parse_channel_configs(struct iio_dev *indio_dev) { struct ad74413r_state *st = iio_priv(indio_dev); - struct fwnode_handle *channel_node = NULL; int ret; - fwnode_for_each_available_child_node(dev_fwnode(st->dev), channel_node) { + device_for_each_child_node_scoped(st->dev, channel_node) { ret = ad74413r_parse_channel_config(indio_dev, channel_node); if (ret) - goto put_channel_node; + return ret; } return 0; - -put_channel_node: - fwnode_handle_put(channel_node); - - return ret; } static int ad74413r_setup_channels(struct iio_dev *indio_dev)