X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=drivers%2Fclk%2Frockchip%2Fclk.c;h=277f9270bf728f4bdc804fea58d037d3627ccedd;hb=f0161aad472599f8bb80ca8758fe30a60e627f56;hp=c5fd146c8cf2afc7c59f14710cf1fe1ba273eccf;hpb=1deaaa33b1c6f5f6fe0b93bca6dca1ac74f288ba;p=firefly-linux-kernel-4.4.55.git diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c index c5fd146c8cf2..277f9270bf72 100644 --- a/drivers/clk/rockchip/clk.c +++ b/drivers/clk/rockchip/clk.c @@ -73,7 +73,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, if (gate_offset >= 0) { gate = kzalloc(sizeof(*gate), GFP_KERNEL); if (!gate) - return ERR_PTR(-ENOMEM); + goto err_gate; gate->flags = gate_flags; gate->reg = base + gate_offset; @@ -85,7 +85,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, if (div_width > 0) { div = kzalloc(sizeof(*div), GFP_KERNEL); if (!div) - return ERR_PTR(-ENOMEM); + goto err_div; div->flags = div_flags; div->reg = base + muxdiv_offset; @@ -105,6 +105,11 @@ static struct clk *rockchip_clk_register_branch(const char *name, flags); return clk; +err_div: + kfree(gate); +err_gate: + kfree(mux); + return ERR_PTR(-ENOMEM); } struct rockchip_clk_frac {