clk: mediatek: Fix memory leak on clock init fail
authorJames Liao <jamesjj.liao@mediatek.com>
Fri, 8 Jan 2016 08:15:33 +0000 (16:15 +0800)
committerStephen Boyd <sboyd@codeaurora.org>
Fri, 29 Jan 2016 21:02:51 +0000 (13:02 -0800)
mtk_clk_register_composite() may leak memory due to some error
handling path don't free all allocated memory. This patch
free all pointers that may allocate memory before error return.
And it's safe because kfree() can handle NULL pointers.

Signed-off-by: James Liao <jamesjj.liao@mediatek.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/mediatek/clk-mtk.c

index cf08db6c130c9887e6bc4ed40415aa683efd9b8d..352830369e0ef0de57ff34d66024c978d2660dcc 100644 (file)
@@ -209,12 +209,14 @@ struct clk * __init mtk_clk_register_composite(const struct mtk_composite *mc,
                mc->flags);
 
        if (IS_ERR(clk)) {
-               kfree(gate);
-               kfree(mux);
+               ret = PTR_ERR(clk);
+               goto err_out;
        }
 
        return clk;
 err_out:
+       kfree(div);
+       kfree(gate);
        kfree(mux);
 
        return ERR_PTR(ret);