iio: adc: ab8500-gpadc: Use device_for_each_child_node_scoped() to simplify erorr...
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 30 Mar 2024 19:08:44 +0000 (19:08 +0000)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 6 Apr 2024 10:29:06 +0000 (11:29 +0100)
This new loop definition automatically releases the handle on early exit
reducing the chance of bugs that cause resource leaks.

Cc: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240330190849.1321065-4-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ab8500-gpadc.c

index 0bc1550c7f11b5b95114dbae9340676f23957d90..59f66e9cb0e8676872543b950350d448fde1a31d 100644 (file)
@@ -1028,7 +1028,6 @@ static int ab8500_gpadc_parse_channels(struct ab8500_gpadc *gpadc,
                                       struct iio_chan_spec **chans_parsed,
                                       unsigned int *nchans_parsed)
 {
-       struct fwnode_handle *child;
        struct ab8500_gpadc_chan_info *ch;
        struct iio_chan_spec *iio_chans;
        unsigned int nchans;
@@ -1052,7 +1051,7 @@ static int ab8500_gpadc_parse_channels(struct ab8500_gpadc *gpadc,
                return -ENOMEM;
 
        i = 0;
-       device_for_each_child_node(gpadc->dev, child) {
+       device_for_each_child_node_scoped(gpadc->dev, child) {
                struct iio_chan_spec *iio_chan;
                int ret;
 
@@ -1062,7 +1061,6 @@ static int ab8500_gpadc_parse_channels(struct ab8500_gpadc *gpadc,
                ret = ab8500_gpadc_parse_channel(gpadc->dev, child, ch,
                                                 iio_chan);
                if (ret) {
-                       fwnode_handle_put(child);
                        return ret;
                }
                i++;