locking/atomics: Fix memory leak in bcm2835_timer_init
diff mbox series

Message ID 20191021201400.2760-1-navid.emamdoost@gmail.com
State New
Headers show
Series
  • locking/atomics: Fix memory leak in bcm2835_timer_init
Related show

Commit Message

Navid Emamdoost Oct. 21, 2019, 8:13 p.m. UTC
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 <navid.emamdoost@gmail.com>
---
 drivers/clocksource/bcm2835_timer.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Florian Fainelli Oct. 21, 2019, 8:46 p.m. UTC | #1
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 <f.fainelli@gmail.com>

> 
> Fixes: 84c39b8b7d46 ("clocksource/drivers/bcm2835_timer: Unmap region obtained by of_iomap")
> Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
> ---
>  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;
>  	}
>  
>

Patch
diff mbox series

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;
 	}