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: Thu Sep 16 2010 - 17:39:21 EST


Hi

On Thursday 16 September 2010, gregkh@xxxxxxx 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@xxxxxxxxx>
> Date: Sun, 8 Aug 2010 14:39:07 +0200
> Subject: percpu: fix a memory leak in pcpu_extend_area_map()
>
> From: Huang Shijie <shijie8@xxxxxxxxx>
>
> 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: config-2.6.35-4.slh.11.9-aptosid-amd64.gz
Description: GNU Zip compressed data