lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v3] clk: mvebu/clk-cpu.c: fix memory leakage
    the variable cpuclk and clk_name should be properly freed when error happens.

    Signed-off-by: Cong Ding <dinggnu@gmail.com>
    Acked-by: Jason Cooper <jason@lakedaemon.net>
    ---
    drivers/clk/mvebu/clk-cpu.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/drivers/clk/mvebu/clk-cpu.c b/drivers/clk/mvebu/clk-cpu.c
    index ff004578..9dd2551 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);
    }

    --
    1.7.10.4


    \
     
     \ /
      Last update: 2013-01-15 20:42    [W:2.971 / U:1.912 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site