@@ -1175,13 +1175,11 @@ static void __init legacy_pll_init(struct device_node *np, int idx)
count = of_property_count_strings(np, "clock-output-names");
BUILD_BUG_ON(ARRAY_SIZE(pll->div) < 4);
- subclks = kcalloc(4, sizeof(struct clk *), GFP_KERNEL);
- if (!subclks)
+ onecell_data = clk_alloc_onecell_data(4);
+ if (!onecell_data)
return;
- onecell_data = kmalloc(sizeof(*onecell_data), GFP_KERNEL);
- if (!onecell_data)
- goto err_clks;
+ subclks = onecell_data->clks;
if (count <= 3) {
subclks[0] = pll->div[0].clk;
@@ -1194,7 +1192,6 @@ static void __init legacy_pll_init(struct device_node *np, int idx)
subclks[3] = pll->div[3].clk;
}
- onecell_data->clks = subclks;
onecell_data->clk_num = count;
rc = of_clk_add_provider(np, of_clk_src_onecell_get, onecell_data);
@@ -1206,9 +1203,7 @@ static void __init legacy_pll_init(struct device_node *np, int idx)
return;
err_cell:
- kfree(onecell_data);
-err_clks:
- kfree(subclks);
+ clk_free_onecell_data(onecell_data);
}
/* Legacy node */
Use helper function clk_alloc_onecell_data() to allocate struct clk_onecell_data. Signed-off-by: David Lechner <david@lechnology.com> --- drivers/clk/clk-qoriq.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)