]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: imx: imx6q: Fix device node reference leak in pll6_bypassed()
authorFelix Gu <ustc.gu@gmail.com>
Tue, 3 Feb 2026 14:07:57 +0000 (22:07 +0800)
committerAbel Vesa <abel.vesa@oss.qualcomm.com>
Thu, 19 Mar 2026 14:15:32 +0000 (16:15 +0200)
The function pll6_bypassed() calls of_parse_phandle_with_args()
but never calls of_node_put() to release the reference, causing
a memory leak.

Fix this by adding proper cleanup calls on all exit paths.

Fixes: 3cc48976e9763 ("clk: imx6q: handle ENET PLL bypass")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Link: https://patch.msgid.link/20260203-clk-imx6q-v3-1-6cd2696bb371@gmail.com
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
drivers/clk/imx/clk-imx6q.c

index f726c00aba721f499951d00734c83b9891feec44..5549ef6c31173934a1ddad88a8fa59a24adc713f 100644 (file)
@@ -238,8 +238,11 @@ static bool pll6_bypassed(struct device_node *node)
                        return false;
 
                if (clkspec.np == node &&
-                   clkspec.args[0] == IMX6QDL_PLL6_BYPASS)
+                   clkspec.args[0] == IMX6QDL_PLL6_BYPASS) {
+                       of_node_put(clkspec.np);
                        break;
+               }
+               of_node_put(clkspec.np);
        }
 
        /* PLL6 bypass is not part of the assigned clock list */
@@ -249,6 +252,9 @@ static bool pll6_bypassed(struct device_node *node)
        ret = of_parse_phandle_with_args(node, "assigned-clock-parents",
                                         "#clock-cells", index, &clkspec);
 
+       if (!ret)
+               of_node_put(clkspec.np);
+
        if (clkspec.args[0] != IMX6QDL_CLK_PLL6)
                return true;