2019-10-21 20:14:51

by Navid Emamdoost

[permalink] [raw]
Subject: [PATCH] locking/atomics: Fix memory leak in bcm2835_timer_init

In the impelementation of bcm2835_timer_init() the allocated memory for
timer should be released if setup_irq() fails.

Fixes: 84c39b8b7d46 ("clocksource/drivers/bcm2835_timer: Unmap region obtained by of_iomap")
Signed-off-by: Navid Emamdoost <[email protected]>
---
drivers/clocksource/bcm2835_timer.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/clocksource/bcm2835_timer.c b/drivers/clocksource/bcm2835_timer.c
index 2b196cbfadb6..7b27cc53ce9c 100644
--- a/drivers/clocksource/bcm2835_timer.c
+++ b/drivers/clocksource/bcm2835_timer.c
@@ -121,6 +121,7 @@ static int __init bcm2835_timer_init(struct device_node *node)
ret = setup_irq(irq, &timer->act);
if (ret) {
pr_err("Can't set up timer IRQ\n");
+ kfree(timer);
goto err_iounmap;
}

--
2.17.1


2019-10-21 20:50:08

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] locking/atomics: Fix memory leak in bcm2835_timer_init

On 10/21/19 1:13 PM, Navid Emamdoost wrote:
> In the impelementation of bcm2835_timer_init() the allocated memory for
> timer should be released if setup_irq() fails.

s/impelementation/implementation/ and also the subject should probably
be changed to better reflect the scope of the patch. With that:

Reviewed-by: Florian Fainelli <[email protected]>

>
> Fixes: 84c39b8b7d46 ("clocksource/drivers/bcm2835_timer: Unmap region obtained by of_iomap")
> Signed-off-by: Navid Emamdoost <[email protected]>
> ---
> drivers/clocksource/bcm2835_timer.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/clocksource/bcm2835_timer.c b/drivers/clocksource/bcm2835_timer.c
> index 2b196cbfadb6..7b27cc53ce9c 100644
> --- a/drivers/clocksource/bcm2835_timer.c
> +++ b/drivers/clocksource/bcm2835_timer.c
> @@ -121,6 +121,7 @@ static int __init bcm2835_timer_init(struct device_node *node)
> ret = setup_irq(irq, &timer->act);
> if (ret) {
> pr_err("Can't set up timer IRQ\n");
> + kfree(timer);
> goto err_iounmap;
> }
>
>


--
Florian