[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