All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND] clocksource: dw_apb_timer_of: add handling for potential memory leak
@ 2021-03-22 12:18 Dinh Nguyen
  2021-04-09 10:27 ` [tip: timers/core] clocksource/drivers/dw_apb_timer_of: Add " tip-bot2 for Dinh Nguyen
  0 siblings, 1 reply; 2+ messages in thread
From: Dinh Nguyen @ 2021-03-22 12:18 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: dinguyen, linux-kernel, tglx, p.zabel, kernel test robot, Dan Carpenter

Add calls to disable the clock and unmap the timer base address in case
of any failures.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
---
 drivers/clocksource/dw_apb_timer_of.c | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c
index 42e7e43b8fcd..b1e2b697b21b 100644
--- a/drivers/clocksource/dw_apb_timer_of.c
+++ b/drivers/clocksource/dw_apb_timer_of.c
@@ -52,18 +52,34 @@ static int __init timer_get_base_and_rate(struct device_node *np,
 		return 0;
 
 	timer_clk = of_clk_get_by_name(np, "timer");
-	if (IS_ERR(timer_clk))
-		return PTR_ERR(timer_clk);
+	if (IS_ERR(timer_clk)) {
+		ret = PTR_ERR(timer_clk);
+		goto out_pclk_disable;
+	}
 
 	ret = clk_prepare_enable(timer_clk);
 	if (ret)
-		return ret;
+		goto out_timer_clk_put;
 
 	*rate = clk_get_rate(timer_clk);
-	if (!(*rate))
-		return -EINVAL;
+	if (!(*rate)) {
+		ret = -EINVAL;
+		goto out_timer_clk_disable;
+	}
 
 	return 0;
+
+out_timer_clk_disable:
+	clk_disable_unprepare(timer_clk);
+out_timer_clk_put:
+	clk_put(timer_clk);
+out_pclk_disable:
+	if (!IS_ERR(pclk)) {
+		clk_disable_unprepare(pclk);
+		clk_put(pclk);
+	}
+	iounmap(*base);
+	return ret;
 }
 
 static int __init add_clockevent(struct device_node *event_timer)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [tip: timers/core] clocksource/drivers/dw_apb_timer_of: Add handling for potential memory leak
  2021-03-22 12:18 [PATCH RESEND] clocksource: dw_apb_timer_of: add handling for potential memory leak Dinh Nguyen
@ 2021-04-09 10:27 ` tip-bot2 for Dinh Nguyen
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Dinh Nguyen @ 2021-04-09 10:27 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: kernel test robot, Dan Carpenter, Dinh Nguyen, Daniel Lezcano,
	x86, linux-kernel

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     397dc6f7ca3c858dc95800f299357311ccf679e6
Gitweb:        https://git.kernel.org/tip/397dc6f7ca3c858dc95800f299357311ccf679e6
Author:        Dinh Nguyen <dinguyen@kernel.org>
AuthorDate:    Mon, 22 Mar 2021 07:18:44 -05:00
Committer:     Daniel Lezcano <daniel.lezcano@linaro.org>
CommitterDate: Thu, 08 Apr 2021 13:24:53 +02:00

clocksource/drivers/dw_apb_timer_of: Add handling for potential memory leak

Add calls to disable the clock and unmap the timer base address in case
of any failures.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20210322121844.2271041-1-dinguyen@kernel.org
---
 drivers/clocksource/dw_apb_timer_of.c | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c
index 2b2c3b5..3819ef5 100644
--- a/drivers/clocksource/dw_apb_timer_of.c
+++ b/drivers/clocksource/dw_apb_timer_of.c
@@ -52,18 +52,34 @@ static int __init timer_get_base_and_rate(struct device_node *np,
 		return 0;
 
 	timer_clk = of_clk_get_by_name(np, "timer");
-	if (IS_ERR(timer_clk))
-		return PTR_ERR(timer_clk);
+	if (IS_ERR(timer_clk)) {
+		ret = PTR_ERR(timer_clk);
+		goto out_pclk_disable;
+	}
 
 	ret = clk_prepare_enable(timer_clk);
 	if (ret)
-		return ret;
+		goto out_timer_clk_put;
 
 	*rate = clk_get_rate(timer_clk);
-	if (!(*rate))
-		return -EINVAL;
+	if (!(*rate)) {
+		ret = -EINVAL;
+		goto out_timer_clk_disable;
+	}
 
 	return 0;
+
+out_timer_clk_disable:
+	clk_disable_unprepare(timer_clk);
+out_timer_clk_put:
+	clk_put(timer_clk);
+out_pclk_disable:
+	if (!IS_ERR(pclk)) {
+		clk_disable_unprepare(pclk);
+		clk_put(pclk);
+	}
+	iounmap(*base);
+	return ret;
 }
 
 static int __init add_clockevent(struct device_node *event_timer)

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-04-09 10:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-22 12:18 [PATCH RESEND] clocksource: dw_apb_timer_of: add handling for potential memory leak Dinh Nguyen
2021-04-09 10:27 ` [tip: timers/core] clocksource/drivers/dw_apb_timer_of: Add " tip-bot2 for Dinh Nguyen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.