diff mbox series

[2/2] iio: ad7292: Fix of_node refcounting

Message ID 20200925091045.302-2-nuno.sa@analog.com (mailing list archive)
State New, archived
Headers show
Series [1/2] iio: ltc2983: Fix of_node refcounting | expand

Commit Message

Nuno Sa Sept. 25, 2020, 9:10 a.m. UTC
When returning or breaking early from a
`for_each_available_child_of_node()` loop, we need to explicitly call
`of_node_put()` on the child node to possibly release the node.

Fixes: 506d2e317a0a0 ("iio: adc: Add driver support for AD7292")
Cc: stable@vger.kernel.org
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
---
 drivers/iio/adc/ad7292.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Jonathan Cameron Sept. 26, 2020, 2:43 p.m. UTC | #1
On Fri, 25 Sep 2020 11:10:45 +0200
Nuno Sá <nuno.sa@analog.com> wrote:

> When returning or breaking early from a
> `for_each_available_child_of_node()` loop, we need to explicitly call
> `of_node_put()` on the child node to possibly release the node.
> 
> Fixes: 506d2e317a0a0 ("iio: adc: Add driver support for AD7292")
> Cc: stable@vger.kernel.org
> Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Applied to the fixes togreg branch of iio.git.

Thanks

Jonathan

> ---
>  drivers/iio/adc/ad7292.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/ad7292.c b/drivers/iio/adc/ad7292.c
> index 2eafbe7ac7c7..ab204e9199e9 100644
> --- a/drivers/iio/adc/ad7292.c
> +++ b/drivers/iio/adc/ad7292.c
> @@ -310,8 +310,10 @@ static int ad7292_probe(struct spi_device *spi)
>  
>  	for_each_available_child_of_node(spi->dev.of_node, child) {
>  		diff_channels = of_property_read_bool(child, "diff-channels");
> -		if (diff_channels)
> +		if (diff_channels) {
> +			of_node_put(child);
>  			break;
> +		}
>  	}
>  
>  	if (diff_channels) {
diff mbox series

Patch

diff --git a/drivers/iio/adc/ad7292.c b/drivers/iio/adc/ad7292.c
index 2eafbe7ac7c7..ab204e9199e9 100644
--- a/drivers/iio/adc/ad7292.c
+++ b/drivers/iio/adc/ad7292.c
@@ -310,8 +310,10 @@  static int ad7292_probe(struct spi_device *spi)
 
 	for_each_available_child_of_node(spi->dev.of_node, child) {
 		diff_channels = of_property_read_bool(child, "diff-channels");
-		if (diff_channels)
+		if (diff_channels) {
+			of_node_put(child);
 			break;
+		}
 	}
 
 	if (diff_channels) {