Re: Patch "percpu: fix a memory leak in pcpu_extend_area_map()" has been added to the 2.6.35-stable tree

From: Stefan Lippers-Hollmann
Date: Fri Sep 17 2010 - 08:25:32 EST


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@xxxxxx>:
[...]
> >> 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@xxxxxxxxx>
> >> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/