public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree
       [not found] <12845915543097@site>
@ 2010-09-16 21:39 ` Stefan Lippers-Hollmann
  2010-09-16 22:47   ` Greg KH
  2010-09-17  2:43   ` Huang Shijie
  0 siblings, 2 replies; 5+ messages in thread
From: Stefan Lippers-Hollmann @ 2010-09-16 21:39 UTC (permalink / raw)
  To: gregkh; +Cc: linux-kernel, shijie8, tj, stable

[-- Attachment #1: Type: Text/Plain, Size: 1625 bytes --]

Hi

On Thursday 16 September 2010, gregkh@suse.de wrote:
> This is a note to let you know that I've just added the patch titled
>     percpu: fix a memory leak in pcpu_extend_area_map()
> to the 2.6.35-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
[...]
> From a002d148426f40bc2b7dc066982eb177cdebeaaa Mon Sep 17 00:00:00 2001
> From: Huang Shijie <shijie8@gmail.com>
> Date: Sun, 8 Aug 2010 14:39:07 +0200
> Subject: percpu: fix a memory leak in pcpu_extend_area_map()
> 
> From: Huang Shijie <shijie8@gmail.com>
> 
> commit a002d148426f40bc2b7dc066982eb177cdebeaaa upstream.
> 
> The original code did not free the old map.  This patch fixes it.
> 
> tj: use @old as memcpy source instead of @chunk->map, and indentation
>     and description update

This patch, as part of the current -stable queue-2.6.35, breaks booting for
me on nforce4/ AMD64 X2. Unfortunately it fails even before the serial 
console is initialized and the only messages shown on screen are:

Decompressing Linux... Parsing ELF... done.
Booting kernel.

[...]
> --- a/mm/percpu.c
> +++ b/mm/percpu.c
> @@ -390,7 +390,9 @@ static int pcpu_extend_area_map(struct p
>  		goto out_unlock;
>  
>  	old_size = chunk->map_alloc * sizeof(chunk->map[0]);
> -	memcpy(new, chunk->map, old_size);
> +	old = chunk->map;
> +
> +	memcpy(new, old, old_size);
>  
>  	/*
>  	 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is

Reverting just this patch from the current queue-2.6.35 fixes the issue for
me; gzipped kernel config (amd64) attached.

Regards
	Stefan Lippers-Hollmann

[-- Attachment #2: config-2.6.35-4.slh.11.9-aptosid-amd64.gz --]
[-- Type: application/x-gzip, Size: 28163 bytes --]

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

* Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree
  2010-09-16 21:39 ` Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree Stefan Lippers-Hollmann
@ 2010-09-16 22:47   ` Greg KH
  2010-09-16 23:37     ` Stefan Lippers-Hollmann
  2010-09-17  2:43   ` Huang Shijie
  1 sibling, 1 reply; 5+ messages in thread
From: Greg KH @ 2010-09-16 22:47 UTC (permalink / raw)
  To: Stefan Lippers-Hollmann; +Cc: linux-kernel, shijie8, tj, stable

On Thu, Sep 16, 2010 at 11:39:02PM +0200, Stefan Lippers-Hollmann wrote:
> Hi
> 
> On Thursday 16 September 2010, gregkh@suse.de wrote:
> > This is a note to let you know that I've just added the patch titled
> >     percpu: fix a memory leak in pcpu_extend_area_map()
> > to the 2.6.35-stable tree which can be found at:
> >     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> [...]
> > From a002d148426f40bc2b7dc066982eb177cdebeaaa Mon Sep 17 00:00:00 2001
> > From: Huang Shijie <shijie8@gmail.com>
> > Date: Sun, 8 Aug 2010 14:39:07 +0200
> > Subject: percpu: fix a memory leak in pcpu_extend_area_map()
> > 
> > From: Huang Shijie <shijie8@gmail.com>
> > 
> > commit a002d148426f40bc2b7dc066982eb177cdebeaaa upstream.
> > 
> > The original code did not free the old map.  This patch fixes it.
> > 
> > tj: use @old as memcpy source instead of @chunk->map, and indentation
> >     and description update
> 
> This patch, as part of the current -stable queue-2.6.35, breaks booting for
> me on nforce4/ AMD64 X2. Unfortunately it fails even before the serial 
> console is initialized and the only messages shown on screen are:
> 
> Decompressing Linux... Parsing ELF... done.
> Booting kernel.
> 
> [...]
> > --- a/mm/percpu.c
> > +++ b/mm/percpu.c
> > @@ -390,7 +390,9 @@ static int pcpu_extend_area_map(struct p
> >  		goto out_unlock;
> >  
> >  	old_size = chunk->map_alloc * sizeof(chunk->map[0]);
> > -	memcpy(new, chunk->map, old_size);
> > +	old = chunk->map;
> > +
> > +	memcpy(new, old, old_size);
> >  
> >  	/*
> >  	 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is
> 
> Reverting just this patch from the current queue-2.6.35 fixes the issue for
> me; gzipped kernel config (amd64) attached.

Does Linus's tree also cause the same problems for you?

thanks,

greg k-h

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

* Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree
  2010-09-16 22:47   ` Greg KH
@ 2010-09-16 23:37     ` Stefan Lippers-Hollmann
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Lippers-Hollmann @ 2010-09-16 23:37 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, shijie8, tj, stable

Hi

On Friday 17 September 2010, Greg KH wrote:
> On Thu, Sep 16, 2010 at 11:39:02PM +0200, Stefan Lippers-Hollmann wrote:
[...]
> > On Thursday 16 September 2010, gregkh@suse.de wrote:
> > > This is a note to let you know that I've just added the patch titled
> > >     percpu: fix a memory leak in pcpu_extend_area_map()
> > > to the 2.6.35-stable tree which can be found at:
> > >     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> > [...]
> > > From a002d148426f40bc2b7dc066982eb177cdebeaaa Mon Sep 17 00:00:00 2001
> > > From: Huang Shijie <shijie8@gmail.com>
> > > Date: Sun, 8 Aug 2010 14:39:07 +0200
> > > Subject: percpu: fix a memory leak in pcpu_extend_area_map()
> > > 
> > > From: Huang Shijie <shijie8@gmail.com>
> > > 
> > > commit a002d148426f40bc2b7dc066982eb177cdebeaaa upstream.
> > > 
> > > The original code did not free the old map.  This patch fixes it.
> > > 
> > > tj: use @old as memcpy source instead of @chunk->map, and indentation
> > >     and description update
> > 
> > This patch, as part of the current -stable queue-2.6.35, breaks booting for
> > me on nforce4/ AMD64 X2. Unfortunately it fails even before the serial 
> > console is initialized and the only messages shown on screen are:
> > 
> > Decompressing Linux... Parsing ELF... done.
> > Booting kernel.
[...]
> > > --- a/mm/percpu.c
> > > +++ b/mm/percpu.c
> > > @@ -390,7 +390,9 @@ static int pcpu_extend_area_map(struct p
> > >  		goto out_unlock;
> > >  
> > >  	old_size = chunk->map_alloc * sizeof(chunk->map[0]);
> > > -	memcpy(new, chunk->map, old_size);
> > > +	old = chunk->map;
> > > +
> > > +	memcpy(new, old, old_size);
> > >  
> > >  	/*
> > >  	 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is
> > 
> > Reverting just this patch from the current queue-2.6.35 fixes the issue for
> > me; gzipped kernel config (amd64) attached.
> 
> Does Linus's tree also cause the same problems for you?

Current linux-2.6 HEAD (v2.6.36-rc4-134-g03a7ab0) boots and works fine with
a config very closely derived from the previous one.

Regards
	Stefan Lippers-Hollmann

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

* Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree
  2010-09-16 21:39 ` Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree Stefan Lippers-Hollmann
  2010-09-16 22:47   ` Greg KH
@ 2010-09-17  2:43   ` Huang Shijie
  2010-09-17 12:25     ` Stefan Lippers-Hollmann
  1 sibling, 1 reply; 5+ messages in thread
From: Huang Shijie @ 2010-09-17  2:43 UTC (permalink / raw)
  To: Stefan Lippers-Hollmann; +Cc: gregkh, linux-kernel, tj, stable

hi :

    I think this maybe caused by the kfree/vfree.
    I do not have any AMD machine. Could you add some log to debug it
?  such as in pcpu_extend_area_map():

        ================================
        printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);
	pcpu_mem_free(old, old_size);
        printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);
        pcpu_mem_free(new, new_size);
        printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);

        ================================
  The system will print the log before it hung.

Best Regards.
Huang Shijie


2010/9/17 Stefan Lippers-Hollmann <s.L-H@gmx.de>:
> Hi
>
> On Thursday 16 September 2010, gregkh@suse.de wrote:
>> This is a note to let you know that I've just added the patch titled
>>     percpu: fix a memory leak in pcpu_extend_area_map()
>> to the 2.6.35-stable tree which can be found at:
>>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> [...]
>> From a002d148426f40bc2b7dc066982eb177cdebeaaa Mon Sep 17 00:00:00 2001
>> From: Huang Shijie <shijie8@gmail.com>
>> Date: Sun, 8 Aug 2010 14:39:07 +0200
>> Subject: percpu: fix a memory leak in pcpu_extend_area_map()
>>
>> From: Huang Shijie <shijie8@gmail.com>
>>
>> commit a002d148426f40bc2b7dc066982eb177cdebeaaa upstream.
>>
>> The original code did not free the old map.  This patch fixes it.
>>
>> tj: use @old as memcpy source instead of @chunk->map, and indentation
>>     and description update
>
> This patch, as part of the current -stable queue-2.6.35, breaks booting for
> me on nforce4/ AMD64 X2. Unfortunately it fails even before the serial
> console is initialized and the only messages shown on screen are:
>
> Decompressing Linux... Parsing ELF... done.
> Booting kernel.
>
> [...]
>> --- a/mm/percpu.c
>> +++ b/mm/percpu.c
>> @@ -390,7 +390,9 @@ static int pcpu_extend_area_map(struct p
>>               goto out_unlock;
>>
>>       old_size = chunk->map_alloc * sizeof(chunk->map[0]);
>> -     memcpy(new, chunk->map, old_size);
>> +     old = chunk->map;
>> +
>> +     memcpy(new, old, old_size);
>>
>>       /*
>>        * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is
>
> Reverting just this patch from the current queue-2.6.35 fixes the issue for
> me; gzipped kernel config (amd64) attached.
>
> Regards
>        Stefan Lippers-Hollmann
>

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

* Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree
  2010-09-17  2:43   ` Huang Shijie
@ 2010-09-17 12:25     ` Stefan Lippers-Hollmann
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Lippers-Hollmann @ 2010-09-17 12:25 UTC (permalink / raw)
  To: Huang Shijie; +Cc: gregkh, linux-kernel, tj, stable

Hi

On Friday 17 September 2010, Huang Shijie wrote:
> hi :
> 
>     I think this maybe caused by the kfree/vfree.
>     I do not have any AMD machine. Could you add some log to debug it
> ?  such as in pcpu_extend_area_map():
> 
>         ================================
[...]
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -390,7 +390,9 @@ static int pcpu_extend_area_map(struct p
 		goto out_unlock;
 
 	old_size = chunk->map_alloc * sizeof(chunk->map[0]);
-	memcpy(new, chunk->map, old_size);
+	old = chunk->map;
+
+	memcpy(new, old, old_size);
 
 	/*
 	 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is
@@ -410,8 +412,11 @@ out_unlock:
 	 * pcpu_mem_free() might end up calling vfree() which uses
 	 * IRQ-unsafe lock and thus can't be called under pcpu_lock.
 	 */
+	printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);
 	pcpu_mem_free(old, old_size);
+	printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);
 	pcpu_mem_free(new, new_size);
+	printk(KERN_INFO "[ %s ] line : %d\n", __func__, __LINE__);
 
 	return 0;
 }
>         ================================
>   The system will print the log before it hung.

Unfortunately those printk lines aren't reached and the systems freezes
earlier.

> Best Regards.
> Huang Shijie
> 
> 
> 2010/9/17 Stefan Lippers-Hollmann <s.L-H@gmx.de>:
[...]
> >> to the 2.6.35-stable tree which can be found at:
> >>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> > [...]
> >> From a002d148426f40bc2b7dc066982eb177cdebeaaa Mon Sep 17 00:00:00 2001
> >> From: Huang Shijie <shijie8@gmail.com>
> >> Date: Sun, 8 Aug 2010 14:39:07 +0200
> >> Subject: percpu: fix a memory leak in pcpu_extend_area_map()
[...]
> > This patch, as part of the current -stable queue-2.6.35, breaks booting for
> > me on nforce4/ AMD64 X2. Unfortunately it fails even before the serial
> > console is initialized and the only messages shown on screen are:
> >
> > Decompressing Linux... Parsing ELF... done.
> > Booting kernel.

I'm still stuck on those lines, before the system freezes, but I can 
reproduce the same issues in Intel Q9550/ ICH10 (x86_64) and Intel 
Pentium M (Banias)/ ICH4-M.

All systems use current Debian/ unstable (gcc-4.4 4.4.4-14, binutils 
2.20.1-14) and are booted by grub2 (grub-pc 1.98+20100804-4). 
Queue-2.6.35 with this patch backed out and current linux-2.6 HEAD 
(v2.6.36-rc4-134-g03a7ab0) are working fine on all tested systems.

Regards
	Stefan Lippers-Hollmann

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

end of thread, other threads:[~2010-09-17 12:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <12845915543097@site>
2010-09-16 21:39 ` Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree Stefan Lippers-Hollmann
2010-09-16 22:47   ` Greg KH
2010-09-16 23:37     ` Stefan Lippers-Hollmann
2010-09-17  2:43   ` Huang Shijie
2010-09-17 12:25     ` Stefan Lippers-Hollmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox