Bug 13863 - found a memory leak in linux-2.6.31-rc4/arch/powerpc/sysdev/ipic.c
Summary: found a memory leak in linux-2.6.31-rc4/arch/powerpc/sysdev/ipic.c
Status: CLOSED CODE_FIX
Alias: None
Product: Other
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: other_other
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-29 11:40 UTC by Martin Ettl
Modified: 2012-06-13 14:28 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.31-rc4
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Martin Ettl 2009-07-29 11:40:35 UTC
Hello,

i checked the sources of the linux kernel with the static code analysis tool cppcheck. It found a memory leak at file :linux-2.6.31-rc4/arch/powerpc/sysdev/ipic.c at line 739

Take a look at the source:

struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
{
	struct ipic	*ipic;
	struct resource res;
	u32 temp = 0, ret;

	ret = of_address_to_resource(node, 0, &res);
	if (ret)
		return NULL;

	ipic = kzalloc(sizeof(*ipic), GFP_KERNEL);
	if (ipic == NULL)
		return NULL;

	ipic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
				       NR_IPIC_INTS,
				       &ipic_host_ops, 0);
	if (ipic->irqhost == NULL)
739		return NULL;
....

Indeed, the function returns without freeing the memory. A possible solution might be:

struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
{
	struct ipic	*ipic;
	struct resource res;
	u32 temp = 0, ret;

	ret = of_address_to_resource(node, 0, &res);
	if (ret)
		return NULL;

	ipic = kzalloc(sizeof(*ipic), GFP_KERNEL);
	if (ipic == NULL)
		return NULL;

	ipic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
				       NR_IPIC_INTS,
				       &ipic_host_ops, 0);
	if (ipic->irqhost == NULL)
        {
           kfree(ipic);
           return NULL;
        }

....

Best regards

Ettl Martin
Comment 1 Davidlohr Bueso 2010-08-09 21:56:09 UTC
It looks like this issue is fixed, can the bug be closed?

Thanks,
Davidlohr
Comment 2 Martin Ettl 2010-08-09 23:27:01 UTC
Can you run please cppcheck against the fixed sources? I have no kernel
sources available at the moment.
http://sourceforge.net/projects/cppcheck/

Many thanks in advance.

Martin


2010/8/9 <bugzilla-daemon@bugzilla.kernel.org>

> https://bugzilla.kernel.org/show_bug.cgi?id=13863
>
>
> Davidlohr Bueso <dave@gnu.org> changed:
>
>           What    |Removed                     |Added
>
> ----------------------------------------------------------------------------
>                 CC|                            |dave@gnu.org
>
>
>
>
> --- Comment #1 from Davidlohr Bueso <dave@gnu.org>  2010-08-09 21:56:09
> ---
> It looks like this issue is fixed, can the bug be closed?
>
> Thanks,
> Davidlohr
>
> --
> Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You reported the bug.
>

Note You need to log in before you can comment on or make changes to this bug.