• Andrey Konovalov's avatar
    kasan: stop leaking stack trace handles · 63b85ac5
    Andrey Konovalov authored
    Commit 773688a6 ("kasan: use stack_depot_put for Generic mode") added
    support for stack trace eviction for Generic KASAN.
    
    However, that commit didn't evict stack traces when the object is not put
    into quarantine.  As a result, some stack traces are never evicted from
    the stack depot.
    
    In addition, with the "kasan: save mempool stack traces" series, the free
    stack traces for mempool objects are also not properly evicted from the
    stack depot.
    
    Fix both issues by:
    
    1. Evicting all stack traces when an object if freed if it was not put
       into quarantine;
    
    2. Always evicting an existing free stack trace when a new one is saved.
    
    Also do a few related clean-ups:
    
    - Do not zero out free track when initializing/invalidating free meta:
      set a value in shadow memory instead;
    
    - Rename KASAN_SLAB_FREETRACK to KASAN_SLAB_FREE_META;
    
    - Drop the kasan_init_cache_meta function as it's not used by KASAN;
    
    - Add comments for the kasan_alloc_meta and kasan_free_meta structs.
    
    [akpm@linux-foundation.org: make release_free_meta() and release_alloc_meta() static]
    Link: https://lkml.kernel.org/r/20231226225121.235865-1-andrey.konovalov@linux.dev
    Fixes: 773688a6 ("kasan: use stack_depot_put for Generic mode")
    Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Marco Elver <elver@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    63b85ac5
generic.c 17.2 KB