If we exit the for_each_of_cpu_node loop early, the reference on the current node must be decremented, otherwise there is a leak. Fixes: ab8ba01b3fe5 ("clk: mvebu: add armada-370-xp CPU specific clocks") Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> --- drivers/clk/mvebu/clk-cpu.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/clk/mvebu/clk-cpu.c b/drivers/clk/mvebu/clk-cpu.c index a11d7273fcc7..9a5c2aec6ec2 100644 --- a/drivers/clk/mvebu/clk-cpu.c +++ b/drivers/clk/mvebu/clk-cpu.c @@ -199,11 +199,14 @@ static void __init of_cpu_clk_setup(struct device_node *node) int cpu, err; err = of_property_read_u32(dn, "reg", &cpu); - if (WARN_ON(err)) + if (WARN_ON(err)) { + of_node_put(dn); goto bail_out; + } clk_name = kasprintf(GFP_KERNEL, "cpu%d", cpu); if (WARN_ON(!clk_name)) { + of_node_put(dn); goto bail_out; } @@ -222,8 +225,10 @@ static void __init of_cpu_clk_setup(struct device_node *node) init.num_parents = 1; clk = clk_register(NULL, &cpuclk[cpu].hw); - if (WARN_ON(IS_ERR(clk))) + if (WARN_ON(IS_ERR(clk))) { + of_node_put(dn); goto bail_out; + } clks[cpu] = clk; } clk_data.clk_num = MAX_CPU; -- 2.27.0