Commit 4b84d496 authored by Felix Gu's avatar Felix Gu Committed by Abel Vesa
Browse files

clk: imx: imx6q: Fix device node reference leak in pll6_bypassed()



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: 3cc48976 ("clk: imx6q: handle ENET PLL bypass")
Signed-off-by: default avatarFelix Gu <ustc.gu@gmail.com>
Reviewed-by: default avatarFrank Li <Frank.Li@nxp.com>
Reviewed-by: default avatarPeng Fan <peng.fan@nxp.com>
Link: https://patch.msgid.link/20260203-clk-imx6q-v3-1-6cd2696bb371@gmail.com


Signed-off-by: default avatarAbel Vesa <abel.vesa@oss.qualcomm.com>
parent a15840f7
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -238,9 +238,12 @@ 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 */
	if (index == num_clocks)
@@ -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;