diff options
Diffstat (limited to 'drivers/clk/mvebu/clk-cpu.c')
| -rw-r--r-- | drivers/clk/mvebu/clk-cpu.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/clk/mvebu/clk-cpu.c b/drivers/clk/mvebu/clk-cpu.c index ff004578a11..9dd2551a0a4 100644 --- a/drivers/clk/mvebu/clk-cpu.c +++ b/drivers/clk/mvebu/clk-cpu.c @@ -124,7 +124,7 @@ void __init of_cpu_clk_setup(struct device_node *node)  	clks = kzalloc(ncpus * sizeof(*clks), GFP_KERNEL);  	if (WARN_ON(!clks)) -		return; +		goto clks_out;  	for_each_node_by_type(dn, "cpu") {  		struct clk_init_data init; @@ -134,11 +134,11 @@ void __init of_cpu_clk_setup(struct device_node *node)  		int cpu, err;  		if (WARN_ON(!clk_name)) -			return; +			goto bail_out;  		err = of_property_read_u32(dn, "reg", &cpu);  		if (WARN_ON(err)) -			return; +			goto bail_out;  		sprintf(clk_name, "cpu%d", cpu);  		parent_clk = of_clk_get(node, 0); @@ -167,6 +167,9 @@ void __init of_cpu_clk_setup(struct device_node *node)  	return;  bail_out:  	kfree(clks); +	while(ncpus--) +		kfree(cpuclk[ncpus].clk_name); +clks_out:  	kfree(cpuclk);  }  |