diff mbox

[v2] gpio/omap: fix possible memory leak in omap2_gpio_dev_init()

Message ID CAPgLHd-XS_AtLr+8R6yNkSXdNxO3i-NapK7o5zBUado-7R99=w@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wei Yongjun Sept. 3, 2012, 12:42 p.m. UTC
From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

pdata and pdata->regs have been allocated in this function and 
should be freed before leaving it, and in the other error handling
cases too.

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
---
 arch/arm/mach-omap2/gpio.c | 2 ++
 1 file changed, 2 insertions(+)



--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Kevin Hilman Sept. 7, 2012, 10:06 p.m. UTC | #1
Wei Yongjun <weiyj.lk@gmail.com> writes:

> From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>
> pdata and pdata->regs have been allocated in this function and 
> should be freed before leaving it, and in the other error handling
> cases too.
>
> spatch with a semantic match is used to found this problem.
> (http://coccinelle.lip6.fr/)
>
> Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

Acked-by: Kevin Hilman <khilman@ti.com>

Tony, can you pick this one up for fixes?

Thanks,

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Sept. 7, 2012, 10:24 p.m. UTC | #2
* Kevin Hilman <khilman@deeprootsystems.com> [120907 15:07]:
> Wei Yongjun <weiyj.lk@gmail.com> writes:
> 
> > From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
> >
> > pdata and pdata->regs have been allocated in this function and 
> > should be freed before leaving it, and in the other error handling
> > cases too.
> >
> > spatch with a semantic match is used to found this problem.
> > (http://coccinelle.lip6.fr/)
> >
> > Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
> 
> Acked-by: Kevin Hilman <khilman@ti.com>
> 
> Tony, can you pick this one up for fixes?

Sure, is fixes-noncritical OK for this one?

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kevin Hilman Sept. 7, 2012, 10:37 p.m. UTC | #3
Tony Lindgren <tony@atomide.com> writes:

> * Kevin Hilman <khilman@deeprootsystems.com> [120907 15:07]:
>> Wei Yongjun <weiyj.lk@gmail.com> writes:
>> 
>> > From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>> >
>> > pdata and pdata->regs have been allocated in this function and 
>> > should be freed before leaving it, and in the other error handling
>> > cases too.
>> >
>> > spatch with a semantic match is used to found this problem.
>> > (http://coccinelle.lip6.fr/)
>> >
>> > Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>> 
>> Acked-by: Kevin Hilman <khilman@ti.com>
>> 
>> Tony, can you pick this one up for fixes?
>
> Sure, is fixes-noncritical OK for this one?

Yes.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c
index 9ad7d48..fe626e90 100644
--- a/arch/arm/mach-omap2/gpio.c
+++ b/arch/arm/mach-omap2/gpio.c
@@ -60,6 +60,7 @@  static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
 	pdata->regs = kzalloc(sizeof(struct omap_gpio_reg_offs), GFP_KERNEL);
 	if (!pdata->regs) {
 		pr_err("gpio%d: Memory allocation failed\n", id);
+		kfree(pdata);
 		return -ENOMEM;
 	}
 
@@ -121,6 +122,7 @@  static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
 		break;
 	default:
 		WARN(1, "Invalid gpio bank_type\n");
+		kfree(pdata->regs);
 		kfree(pdata);
 		return -EINVAL;
 	}