Skip to content

Commit d6f620a

Browse files
ccdingJason Cooper
authored andcommitted
clk: mvebu/clk-cpu.c: fix memory leakage
the variable cpuclk and clk_name should be properly freed when error happens. Signed-off-by: Cong Ding <[email protected]> Acked-by: Jason Cooper <[email protected]> Acked-by: Gregory CLEMENT <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Jason Cooper <[email protected]>
1 parent 11d5993 commit d6f620a

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/clk/mvebu/clk-cpu.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ void __init of_cpu_clk_setup(struct device_node *node)
124124

125125
clks = kzalloc(ncpus * sizeof(*clks), GFP_KERNEL);
126126
if (WARN_ON(!clks))
127-
return;
127+
goto clks_out;
128128

129129
for_each_node_by_type(dn, "cpu") {
130130
struct clk_init_data init;
@@ -134,11 +134,11 @@ void __init of_cpu_clk_setup(struct device_node *node)
134134
int cpu, err;
135135

136136
if (WARN_ON(!clk_name))
137-
return;
137+
goto bail_out;
138138

139139
err = of_property_read_u32(dn, "reg", &cpu);
140140
if (WARN_ON(err))
141-
return;
141+
goto bail_out;
142142

143143
sprintf(clk_name, "cpu%d", cpu);
144144
parent_clk = of_clk_get(node, 0);
@@ -167,6 +167,9 @@ void __init of_cpu_clk_setup(struct device_node *node)
167167
return;
168168
bail_out:
169169
kfree(clks);
170+
while(ncpus--)
171+
kfree(cpuclk[ncpus].clk_name);
172+
clks_out:
170173
kfree(cpuclk);
171174
}
172175

0 commit comments

Comments
 (0)