• Qian Cai's avatar
    slub: fix SLAB_CONSISTENCY_CHECKS + KASAN_SW_TAGS · 338cfaad
    Qian Cai authored
    Enabling SLUB_DEBUG's SLAB_CONSISTENCY_CHECKS with KASAN_SW_TAGS
    triggers endless false positives during boot below due to
    check_valid_pointer() checks tagged pointers which have no addresses
    that is valid within slab pages:
    
      BUG radix_tree_node (Tainted: G    B            ): Freelist Pointer check fails
      -----------------------------------------------------------------------------
    
      INFO: Slab objects=69 used=69 fp=0x          (null) flags=0x7ffffffc000200
      INFO: Object @offset=15060037153926966016 fp=0x
    
      Redzone: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 18 6b 06 00 08 80 ff d0  .........k......
      Object : 18 6b 06 00 08 80 ff d0 00 00 00 00 00 00 00 00  .k..............
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      Redzone: bb bb bb bb bb bb bb bb                          ........
      Padding: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      CPU: 0 PID: 0 Comm: swapper/0 Tainted: G    B             5.0.0-rc5+ #18
      Call trace:
        dump_backtrace+0x0/0x450
        show_stack+0x20/0x2c
        __dump_stack+0x20/0x28
        dump_stack+0xa0/0xfc
        print_trailer+0x1bc/0x1d0
        object_err+0x40/0x50
        alloc_debug_processing+0xf0/0x19c
        ___slab_alloc+0x554/0x704
        kmem_cache_alloc+0x2f8/0x440
        radix_tree_node_alloc+0x90/0x2fc
        idr_get_free+0x1e8/0x6d0
        idr_alloc_u32+0x11c/0x2a4
        idr_alloc+0x74/0xe0
        worker_pool_assign_id+0x5c/0xbc
        workqueue_init_early+0x49c/0xd50
        start_kernel+0x52c/0xac4
      FIX radix_tree_node: Marking all objects used
    
    Link: http://lkml.kernel.org/r/20190209044128.3290-1-cai@lca.pwSigned-off-by: default avatarQian Cai <cai@lca.pw>
    Reviewed-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    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>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    338cfaad
slub.c 143 KB