iio: adc: qcom-pm8xxx-xoadc: use scoped device_for_each_child_node()
authorJavier Carrasco <javier.carrasco.cruz@gmail.com>
Thu, 26 Sep 2024 16:08:37 +0000 (18:08 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 5 Oct 2024 11:09:14 +0000 (12:09 +0100)
Switch to device_for_each_child_node_scoped() to simplify the code by
removing the need for calls to fwnode_handle_put() in the error path.

This prevents possible memory leaks if new error paths are added without
the required call to fwnode_handle_put().

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Link: https://patch.msgid.link/20240926-iio_device_for_each_child_node_scoped-v1-1-64ca8a424578@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/qcom-pm8xxx-xoadc.c

index 9e1112f5acc6a46b02491f89e76d8168f3a9dbc7..311e9a804ded1739e641ef61094c31e004ba7f11 100644 (file)
@@ -821,7 +821,6 @@ static int pm8xxx_xoadc_parse_channel(struct device *dev,
 
 static int pm8xxx_xoadc_parse_channels(struct pm8xxx_xoadc *adc)
 {
-       struct fwnode_handle *child;
        struct pm8xxx_chan_info *ch;
        int ret;
        int i;
@@ -844,16 +843,15 @@ static int pm8xxx_xoadc_parse_channels(struct pm8xxx_xoadc *adc)
                return -ENOMEM;
 
        i = 0;
-       device_for_each_child_node(adc->dev, child) {
+       device_for_each_child_node_scoped(adc->dev, child) {
                ch = &adc->chans[i];
                ret = pm8xxx_xoadc_parse_channel(adc->dev, child,
                                                 adc->variant->channels,
                                                 &adc->iio_chans[i],
                                                 ch);
-               if (ret) {
-                       fwnode_handle_put(child);
+               if (ret)
                        return ret;
-               }
+
                i++;
        }