• Andrey Konovalov's avatar
    kasan: rename kasan_slab_free_mempool to kasan_mempool_poison_object · 280ec6cc
    Andrey Konovalov authored
    Patch series "kasan: save mempool stack traces".
    
    This series updates KASAN to save alloc and free stack traces for
    secondary-level allocators that cache and reuse allocations internally
    instead of giving them back to the underlying allocator (e.g.  mempool).
    
    As a part of this change, introduce and document a set of KASAN hooks:
    
    bool kasan_mempool_poison_pages(struct page *page, unsigned int order);
    void kasan_mempool_unpoison_pages(struct page *page, unsigned int order);
    bool kasan_mempool_poison_object(void *ptr);
    void kasan_mempool_unpoison_object(void *ptr, size_t size);
    
    and use them in the mempool code.
    
    Besides mempool, skbuff and io_uring also cache allocations and already
    use KASAN hooks to poison those.  Their code is updated to use the new
    mempool hooks.
    
    The new hooks save alloc and free stack traces (for normal kmalloc and
    slab objects; stack traces for large kmalloc objects and page_alloc are
    not supported by KASAN yet), improve the readability of the users' code,
    and also allow the users to prevent double-free and invalid-free bugs; see
    the patches for the details.
    
    
    This patch (of 21):
    
    Rename kasan_slab_free_mempool to kasan_mempool_poison_object.
    
    kasan_slab_free_mempool is a slightly confusing name: it is unclear
    whether this function poisons the object when it is freed into mempool or
    does something when the object is freed from mempool to the underlying
    allocator.
    
    The new name also aligns with other mempool-related KASAN hooks added in
    the following patches in this series.
    
    Link: https://lkml.kernel.org/r/cover.1703024586.git.andreyknvl@google.com
    Link: https://lkml.kernel.org/r/c5618685abb7cdbf9fb4897f565e7759f601da84.1703024586.git.andreyknvl@google.comSigned-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Cc: Alexander Lobakin <alobakin@pm.me>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Breno Leitao <leitao@debian.org>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Evgenii Stepanov <eugenis@google.com>
    Cc: Marco Elver <elver@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    280ec6cc
mempool.c 16.1 KB