Takashi Iwai 4cf561
From 002be81140075e17a1ebd5c3c55e356fbab0ddad Mon Sep 17 00:00:00 2001
Takashi Iwai 4cf561
From: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Takashi Iwai 4cf561
Date: Fri, 28 May 2021 07:51:26 -0400
Takashi Iwai 4cf561
Subject: [PATCH] mfd: core: Add missing of_node_put for loop iteration
Takashi Iwai 4cf561
Git-commit: 002be81140075e17a1ebd5c3c55e356fbab0ddad
Takashi Iwai 4cf561
Patch-mainline: v5.16-rc1
Takashi Iwai 001336
References: git-fixes stable-5.14.19
Takashi Iwai 4cf561
Takashi Iwai 4cf561
Early exits from for_each_child_of_node() should decrement the
Takashi Iwai 4cf561
node reference counter.  Reported by Coccinelle:
Takashi Iwai 4cf561
Takashi Iwai 4cf561
  drivers/mfd/mfd-core.c:197:2-24: WARNING:
Takashi Iwai 4cf561
    Function "for_each_child_of_node" should have of_node_put() before goto around lines 209.
Takashi Iwai 4cf561
Takashi Iwai 4cf561
Fixes: c94bb233a9fe ("mfd: Make MFD core code Device Tree and IRQ domain aware")
Takashi Iwai 4cf561
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Takashi Iwai 4cf561
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Takashi Iwai 4cf561
Link: https://lore.kernel.org/r/20210528115126.18370-1-krzysztof.kozlowski@canonical.com
Takashi Iwai 4cf561
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 4cf561
Takashi Iwai 4cf561
---
Takashi Iwai 4cf561
 drivers/mfd/mfd-core.c | 2 ++
Takashi Iwai 4cf561
 1 file changed, 2 insertions(+)
Takashi Iwai 4cf561
Takashi Iwai 4cf561
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
Takashi Iwai 4cf561
index 79f5c6a18815..684a011a6396 100644
Takashi Iwai 4cf561
--- a/drivers/mfd/mfd-core.c
Takashi Iwai 4cf561
+++ b/drivers/mfd/mfd-core.c
Takashi Iwai 4cf561
@@ -198,6 +198,7 @@ static int mfd_add_device(struct device *parent, int id,
Takashi Iwai 4cf561
 			if (of_device_is_compatible(np, cell->of_compatible)) {
Takashi Iwai 4cf561
 				/* Ignore 'disabled' devices error free */
Takashi Iwai 4cf561
 				if (!of_device_is_available(np)) {
Takashi Iwai 4cf561
+					of_node_put(np);
Takashi Iwai 4cf561
 					ret = 0;
Takashi Iwai 4cf561
 					goto fail_alias;
Takashi Iwai 4cf561
 				}
Takashi Iwai 4cf561
@@ -205,6 +206,7 @@ static int mfd_add_device(struct device *parent, int id,
Takashi Iwai 4cf561
 				ret = mfd_match_of_node_to_dev(pdev, np, cell);
Takashi Iwai 4cf561
 				if (ret == -EAGAIN)
Takashi Iwai 4cf561
 					continue;
Takashi Iwai 4cf561
+				of_node_put(np);
Takashi Iwai 4cf561
 				if (ret)
Takashi Iwai 4cf561
 					goto fail_alias;
Takashi Iwai 4cf561
 
Takashi Iwai 4cf561
-- 
Takashi Iwai 4cf561
2.26.2
Takashi Iwai 4cf561