Merge branch 'for-linus' of git://linux-arm.org/linux-2.6
Linus Torvalds [Thu, 11 Jun 2009 21:15:57 +0000 (14:15 -0700)]
* 'for-linus' of git://linux-arm.org/linux-2.6:
  kmemleak: Add the corresponding MAINTAINERS entry
  kmemleak: Simple testing module for kmemleak
  kmemleak: Enable the building of the memory leak detector
  kmemleak: Remove some of the kmemleak false positives
  kmemleak: Add modules support
  kmemleak: Add kmemleak_alloc callback from alloc_large_system_hash
  kmemleak: Add the vmalloc memory allocation/freeing hooks
  kmemleak: Add the slub memory allocation/freeing hooks
  kmemleak: Add the slob memory allocation/freeing hooks
  kmemleak: Add the slab memory allocation/freeing hooks
  kmemleak: Add documentation on the memory leak detector
  kmemleak: Add the base support

Manual conflict resolution (with the slab/earlyboot changes) in:
drivers/char/vt.c
init/main.c
mm/slab.c

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
drivers/char/vt.c
fs/block_dev.c
init/main.c
kernel/module.c
mm/slab.c
mm/slub.c
mm/vmalloc.c

Simple merge
diff --cc MAINTAINERS
Simple merge
Simple merge
diff --cc fs/block_dev.c
Simple merge
diff --cc init/main.c
@@@ -621,6 -604,8 +622,7 @@@ asmlinkage void __init start_kernel(voi
        /* init some links before init_ISA_irqs() */
        early_irq_init();
        init_IRQ();
+       prio_tree_init();
 -      pidhash_init();
        init_timers();
        hrtimers_init();
        softirq_init();
                initrd_start = 0;
        }
  #endif
 -      vmalloc_init();
 -      vfs_caches_init_early();
        cpuset_init_early();
        page_cgroup_init();
 -      mem_init();
        enable_debug_pagealloc();
        cpu_hotplug_init();
 -      kmem_cache_init();
        kmemtrace_init();
+       kmemleak_init();
        debug_objects_mem_init();
        idr_init_cache();
        setup_per_cpu_pageset();
diff --cc kernel/module.c
Simple merge
diff --cc mm/slab.c
+++ b/mm/slab.c
@@@ -963,7 -964,15 +964,15 @@@ static struct array_cache *alloc_arrayc
        int memsize = sizeof(void *) * entries + sizeof(struct array_cache);
        struct array_cache *nc = NULL;
  
 -      nc = kmalloc_node(memsize, GFP_KERNEL, node);
 +      nc = kmalloc_node(memsize, gfp, node);
+       /*
+        * The array_cache structures contain pointers to free object.
+        * However, when such objects are allocated or transfered to another
+        * cache the pointers are not cleared and they could be counted as
+        * valid references during a kmemleak scan. Therefore, kmemleak must
+        * not scan such objects.
+        */
+       kmemleak_no_scan(nc);
        if (nc) {
                nc->avail = 0;
                nc->limit = entries;
diff --cc mm/slub.c
Simple merge
diff --cc mm/vmalloc.c
@@@ -23,7 -23,9 +23,8 @@@
  #include <linux/rbtree.h>
  #include <linux/radix-tree.h>
  #include <linux/rcupdate.h>
 -#include <linux/bootmem.h>
  #include <linux/pfn.h>
+ #include <linux/kmemleak.h>
  
  #include <asm/atomic.h>
  #include <asm/uaccess.h>