On Sun, 2024-01-14 at 17:20 +0000, Jonathan Cameron wrote: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > This use of the new cleanup.h scope based freeing infrastructure allows > us to exit directly from error conditions within the > fwnode_for_each_available_child_node(dev, child) loop. On normal exit > from that loop no fwnode_handle reference will be held and the child > pointer will be NULL thus making the automatically run > fwnode_handle_put() a noop. > > Cc: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- Acked-by: Nuno Sa <nuno.sa@xxxxxxxxxx> > drivers/iio/addac/ad74413r.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/drivers/iio/addac/ad74413r.c b/drivers/iio/addac/ad74413r.c > index 7af3e4b8fe3b..ec9a466e118d 100644 > --- a/drivers/iio/addac/ad74413r.c > +++ b/drivers/iio/addac/ad74413r.c > @@ -1255,21 +1255,16 @@ 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; > + struct fwnode_handle *channel_node __free(fwnode_handle) = NULL; > int ret; > > fwnode_for_each_available_child_node(dev_fwnode(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)