Skip to content
  • Qian Cai's avatar
    mm/slab.c: kmemleak no scan alien caches · a9c70243
    Qian Cai authored
    [ Upstream commit 92d1d07d ]
    
    Kmemleak throws endless warnings during boot due to in
    __alloc_alien_cache(),
    
        alc = kmalloc_node(memsize, gfp, node);
        init_arraycache(&alc->ac, entries, batch);
        kmemleak_no_scan(ac);
    
    Kmemleak does not track the array cache (alc->ac) but the alien cache
    (alc) instead, so let it track the latter by lifting kmemleak_no_scan()
    out of init_arraycache().
    
    There is another place that calls init_arraycache(), but
    alloc_kmem_cache_cpus() uses the percpu allocation where will never be
    considered as a leak.
    
      kmemleak: Found object by alias at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       lookup_object+0x84/0xac
       find_and_get_object+0x84/0xe4
       kmemleak_no_scan+0x74/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
      kmemleak: Object 0xffff8007b9aa7e00 (size 256):
      kmemleak:   comm "swapper/0", pid 1, jiffies 4294697137
      kmemleak:   min_count = 1
      kmemleak:   count = 0
      kmemleak:   flags = 0x1
      kmemleak:   checksum = 0
      kmemleak:   backtrace:
           kmemleak_alloc+0x84/0xb8
           kmem_cache_alloc_node_trace+0x31c/0x3a0
           __kmalloc_node+0x58/0x78
           setup_kmem_cache_node+0x26c/0x35c
           __do_tune_cpucache+0x250/0x2d4
           do_tune_cpucache+0x4c/0xe4
           enable_cpucache+0xc8/0x110
           setup_cpu_cache+0x40/0x1b8
           __kmem_cache_create+0x240/0x358
           create_cache+0xc0/0x198
           kmem_cache_create_usercopy+0x158/0x20c
           kmem_cache_create+0x50/0x64
           fsnotify_init+0x58/0x6c
           do_one_initcall+0x194/0x388
           kernel_init_freeable+0x668/0x688
           kernel_init+0x18/0x124
      kmemleak: Not scanning unknown object at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       kmemleak_no_scan+0x90/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
    
    Link: http://lkml.kernel.org/r/20190129184518.39808-1-cai@lca.pw
    Fixes: 1fe00d50
    
     ("slab: factor out initialization of array cache")
    Signed-off-by: default avatarQian Cai <cai@lca.pw>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    a9c70243