diff --git a/drivers/clk/pistachio/clk.c b/drivers/clk/pistachio/clk.c index 80c722c77a1b..03e28779011f 100644 --- a/drivers/clk/pistachio/clk.c +++ b/drivers/clk/pistachio/clk.c @@ -17,28 +17,21 @@ pistachio_clk_alloc_provider(struct device_node *node, unsigned int num_clks) { struct pistachio_clk_provider *p; - p = kzalloc_obj(*p); + p = kzalloc_flex(*p, clks, num_clks); if (!p) return p; - p->clk_data.clks = kzalloc_objs(struct clk *, num_clks); - if (!p->clk_data.clks) - goto free_provider; + p->clk_data.clks = p->clks; p->clk_data.clk_num = num_clks; p->node = node; p->base = of_iomap(node, 0); if (!p->base) { pr_err("Failed to map clock provider registers\n"); - goto free_clks; + kfree(p); + return NULL; } return p; - -free_clks: - kfree(p->clk_data.clks); -free_provider: - kfree(p); - return NULL; } void pistachio_clk_register_provider(struct pistachio_clk_provider *p) diff --git a/drivers/clk/pistachio/clk.h b/drivers/clk/pistachio/clk.h index 2f4ffbd98282..1b9b311b9656 100644 --- a/drivers/clk/pistachio/clk.h +++ b/drivers/clk/pistachio/clk.h @@ -142,6 +142,7 @@ struct pistachio_clk_provider { struct device_node *node; void __iomem *base; struct clk_onecell_data clk_data; + struct clk *clks[]; }; extern struct pistachio_clk_provider *