[linux-yocto] [PATCH 17/25] FogBugz #538499: klockwork: fix potential memory leaks

Meng.Li at windriver.com Meng.Li at windriver.com
Tue Apr 3 19:37:40 PDT 2018


From: Dinh Nguyen <dinh.nguyen at intel.com>

commit  31423994dd0df04b38022b47330146c8990891c8 from
https://github.com/altera-opensource/linux-socfpga.git

Fix potential memory leaks in the Stratix10 clock driver by freeing the
struct pointer for error conditions.

Remove 'reg2' variable, which was unused.

Signed-off-by: Dinh Nguyen <dinh.nguyen at intel.com>
Signed-off-by: Meng Li <Meng.Li at windriver.com>
---
 drivers/clk/socfpga/clk-gate-s10.c   |    5 ++++-
 drivers/clk/socfpga/clk-periph-s10.c |    1 +
 drivers/clk/socfpga/clk-pll-s10.c    |   11 +++++++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/socfpga/clk-gate-s10.c b/drivers/clk/socfpga/clk-gate-s10.c
index 55cbf5c..f02df91 100644
--- a/drivers/clk/socfpga/clk-gate-s10.c
+++ b/drivers/clk/socfpga/clk-gate-s10.c
@@ -185,6 +185,7 @@ static void __init __socfpga_gate_init(struct device_node *node,
 		if (IS_ERR(socfpga_clk->sys_mgr_base_addr)) {
 			pr_err("%s: failed to find altr,sys-mgr regmap!\n",
 				__func__);
+			kfree(socfpga_clk);
 			return;
 		}
 	}
@@ -208,8 +209,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
 		return;
 	}
 	rc = of_clk_add_provider(node, of_clk_src_simple_get, clk);
-	if (WARN_ON(rc))
+	if (WARN_ON(rc)) {
+		kfree(socfpga_clk);
 		return;
+	}
 }
 
 void __init socfpga_s10_gate_init(struct device_node *node)
diff --git a/drivers/clk/socfpga/clk-periph-s10.c b/drivers/clk/socfpga/clk-periph-s10.c
index 3827a89..4dea3f9a 100644
--- a/drivers/clk/socfpga/clk-periph-s10.c
+++ b/drivers/clk/socfpga/clk-periph-s10.c
@@ -155,6 +155,7 @@ static __init void __socfpga_periph_init(struct device_node *node,
 
 err_clk:
 	clk_unregister(clk);
+	kfree(periph_clk);
 }
 
 void __init socfpga_s10_periph_init(struct device_node *node)
diff --git a/drivers/clk/socfpga/clk-pll-s10.c b/drivers/clk/socfpga/clk-pll-s10.c
index 231c798..6b235ed 100644
--- a/drivers/clk/socfpga/clk-pll-s10.c
+++ b/drivers/clk/socfpga/clk-pll-s10.c
@@ -136,8 +136,19 @@ static struct clk * __init __socfpga_pll_init(struct device_node *node,
 		kfree(pll_clk);
 		return NULL;
 	}
+
 	rc = of_clk_add_provider(node, of_clk_src_simple_get, clk);
+	if (rc < 0) {
+		pr_err("Could not register clock provider for node:%s\n",
+			clk_name);
+		goto err_clk;
+	}
 	return clk;
+
+err_clk:
+	clk_unregister(clk);
+	kfree(pll_clk);
+	return NULL;
 }
 
 void __init socfpga_s10_pll_init(struct device_node *node)
-- 
1.7.9.5



More information about the linux-yocto mailing list