[PATCH] pinctrl: freescale: imx1: Fix device node leaks in imx1_pinctrl_dt_is_flat_functions()

Md Rabbani <[email protected]>
Newsgroups org.kernel.vger.linux-gpio,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel
Message-ID <[email protected]>
imx1_pinctrl_dt_is_flat_functions() uses for_each_child_of_node() to
iterate over child and grandchild nodes. When the function returns
early upon finding an "fsl,pins" property, it does not release the
acquired device_node references, leaking their reference counts.

Switch to for_each_child_of_node_scoped() to automatically drop the
node references on early return and loop exit, matching the pattern used
in pinctrl-imx.c and elsewhere in this driver.

Signed-off-by: Md Rabbani <[email protected]>
---
 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..4a6bdaefa4 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
@@ -547,14 +547,11 @@ static int imx1_pinctrl_parse_functions(struct device_node *np,
  */
 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.55.0.windows.3
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.