From: Junlin Yang <[email protected]>

Fix OF node leaks by calling of_node_put in
for_each_available_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang <[email protected]>
---
 drivers/pinctrl/stm32/pinctrl-stm32.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c 
b/drivers/pinctrl/stm32/pinctrl-stm32.c
index 7d9bded..da72e3e 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -1542,8 +1542,10 @@ int stm32_pctl_probe(struct platform_device *pdev)
                if (of_property_read_bool(child, "gpio-controller")) {
                        bank->rstc = of_reset_control_get_exclusive(child,
                                                                    NULL);
-                       if (PTR_ERR(bank->rstc) == -EPROBE_DEFER)
+                       if (PTR_ERR(bank->rstc) == -EPROBE_DEFER) {
+                               of_node_put(child);
                                return -EPROBE_DEFER;
+                       }
 
                        bank->clk = of_clk_get_by_name(child, NULL);
                        if (IS_ERR(bank->clk)) {
@@ -1551,6 +1553,7 @@ int stm32_pctl_probe(struct platform_device *pdev)
                                        dev_err(dev,
                                                "failed to get clk (%ld)\n",
                                                PTR_ERR(bank->clk));
+                               of_node_put(child);
                                return PTR_ERR(bank->clk);
                        }
                        i++;
-- 
1.9.1


Reply via email to