clk: davinci: pll: Add of_node_put() in of_davinci_pll_init()
authorNishka Dasgupta <nishkadg.linux@gmail.com>
Sun, 4 Aug 2019 16:28:24 +0000 (21:58 +0530)
committerStephen Boyd <sboyd@kernel.org>
Wed, 7 Aug 2019 22:25:45 +0000 (15:25 -0700)
The variable child in the function of_davinci_pll_init takes the value
of of_get_child_by_name, which gets a node but does not put it. If child
is not put before the function returns it may cause a memory leak. Hence
put child before two return statements.
Issue found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Link: https://lkml.kernel.org/r/20190804162824.6338-1-nishkadg.linux@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/davinci/pll.c

index 1c99e992d63882209734a873e149272f58e3d82f..1ac11b6a47a37177c0c3c97d1903066a8c3fa3c6 100644 (file)
@@ -778,12 +778,15 @@ int of_davinci_pll_init(struct device *dev, struct device_node *node,
                int i;
 
                clk_data = kzalloc(sizeof(*clk_data), GFP_KERNEL);
-               if (!clk_data)
+               if (!clk_data) {
+                       of_node_put(child);
                        return -ENOMEM;
+               }
 
                clks = kmalloc_array(n_clks, sizeof(*clks), GFP_KERNEL);
                if (!clks) {
                        kfree(clk_data);
+                       of_node_put(child);
                        return -ENOMEM;
                }