iio: addac: ad74413r: Use device_for_each_child_node_scoped()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 17 Feb 2024 16:42:46 +0000 (16:42 +0000)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 25 Mar 2024 19:50:09 +0000 (19:50 +0000)
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>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240217164249.921878-13-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/addac/ad74413r.c

index 7af3e4b8fe3bb9ae03449e19a55c1a63a432a8c5..cd26a16dc0ff80f0e197e864a8b919020056a31c 100644 (file)
@@ -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)