[PATCH v2] pinctrl: imx1-core: fix device_node refcount leak

manushprajwal <[email protected]>
Newsgroups dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-gpio
Message-ID <[email protected]>
From: Manush Prajwal <[email protected]>

imx1_pinctrl_dt_is_flat_functions() iterated child and grandchild
device nodes with for_each_child_of_node() but returned early from
inside both loops without dropping the reference the iterator held on
the current node.

Rework both loops around for_each_child_of_node_scoped() instead of
adding manual of_node_put() calls, matching the sibling helper in
pinctrl-imx.c and imx1_pinctrl_parse_dt() in this same file, which
already use the scoped variant.

Signed-off-by: Manush Prajwal <[email protected]>
---
v2: Use for_each_child_of_node_scoped() instead of manual of_node_put()
    calls, per Frank Li's review.

 drivers/pinctrl/freescale/pinctrl-imx1-core.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/pinctrl/freescale/pinctrl-imx1-core.c b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
index b7bd4ef9c0..fa8f6a7e03 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
@@ -547,14 +547,11 @@
  */
 static bool imx1_pinctrl_dt_is_flat_functions(struct device_node *np)
 {
-	struct device_node *function_np;
-	struct device_node *pinctrl_np;
-
-	for_each_child_of_node(np, function_np) {
+	for_each_child_of_node_scoped(np, function_np) {
 		if (of_property_present(function_np, "fsl,pins"))
 			return true;

-		for_each_child_of_node(function_np, pinctrl_np) {
+		for_each_child_of_node_scoped(function_np, pinctrl_np) {
 			if (of_property_present(pinctrl_np, "fsl,pins"))
 				return false;
 		}
--
2.46.2.windows.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.