Commit 47dcf770 authored by Jialin Zhang's avatar Jialin Zhang Committed by Jonathan Cameron
Browse files

iio: adc: ti-ads131e08: add missing fwnode_handle_put() in ads131e08_alloc_channels()



fwnode_handle_put() should be used when terminating
device_for_each_child_node() iteration with break or return to prevent
stale device node references from being left behind.

Fixes: d935eddd ("iio: adc: Add driver for Texas Instruments ADS131E0x ADC family")
Reported-by: default avatarHulk Robot <hulkci@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
Link: https://lore.kernel.org/r/20220517033020.2033324-1-zhangjialin11@huawei.com


Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent d836715f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -739,7 +739,7 @@ static int ads131e08_alloc_channels(struct iio_dev *indio_dev)
	device_for_each_child_node(dev, node) {
		ret = fwnode_property_read_u32(node, "reg", &channel);
		if (ret)
			return ret;
			goto err_child_out;

		ret = fwnode_property_read_u32(node, "ti,gain", &tmp);
		if (ret) {
@@ -747,7 +747,7 @@ static int ads131e08_alloc_channels(struct iio_dev *indio_dev)
		} else {
			ret = ads131e08_pga_gain_to_field_value(st, tmp);
			if (ret < 0)
				return ret;
				goto err_child_out;

			channel_config[i].pga_gain = tmp;
		}
@@ -758,7 +758,7 @@ static int ads131e08_alloc_channels(struct iio_dev *indio_dev)
		} else {
			ret = ads131e08_validate_channel_mux(st, tmp);
			if (ret)
				return ret;
				goto err_child_out;

			channel_config[i].mux = tmp;
		}
@@ -784,6 +784,10 @@ static int ads131e08_alloc_channels(struct iio_dev *indio_dev)
	st->channel_config = channel_config;

	return 0;

err_child_out:
	fwnode_handle_put(node);
	return ret;
}

static void ads131e08_regulator_disable(void *data)