kmemleak: Fix the kmemleak tracking of the percpu areas with !SMP
authorCatalin Marinas <catalin.marinas@arm.com>
Wed, 9 May 2012 15:55:19 +0000 (16:55 +0100)
committerTejun Heo <tj@kernel.org>
Wed, 9 May 2012 17:13:29 +0000 (10:13 -0700)
Kmemleak tracks the percpu allocations via a specific API and the
originally allocated areas must be removed from kmemleak (via
kmemleak_free). The code was already doing this for SMP systems.

Reported-by: Sami Liedes <sami.liedes@iki.fi>
Cc: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
mm/percpu.c

index ac5c626..bb4be74 100644 (file)
@@ -1895,6 +1895,8 @@ void __init setup_per_cpu_areas(void)
        fc = __alloc_bootmem(unit_size, PAGE_SIZE, __pa(MAX_DMA_ADDRESS));
        if (!ai || !fc)
                panic("Failed to allocate memory for percpu areas.");
+       /* kmemleak tracks the percpu allocations separately */
+       kmemleak_free(fc);
 
        ai->dyn_size = unit_size;
        ai->unit_size = unit_size;