• Andrey Konovalov's avatar
    kasan, page_alloc: deduplicate should_skip_kasan_poison · 94ae8b83
    Andrey Konovalov authored
    Patch series "kasan, vmalloc, arm64: add vmalloc tagging support for SW/HW_TAGS", v6.
    
    This patchset adds vmalloc tagging support for SW_TAGS and HW_TAGS
    KASAN modes.
    
    About half of patches are cleanups I went for along the way.  None of them
    seem to be important enough to go through stable, so I decided not to
    split them out into separate patches/series.
    
    The patchset is partially based on an early version of the HW_TAGS
    patchset by Vincenzo that had vmalloc support.  Thus, I added a
    Co-developed-by tag into a few patches.
    
    SW_TAGS vmalloc tagging support is straightforward.  It reuses all of the
    generic KASAN machinery, but uses shadow memory to store tags instead of
    magic values.  Naturally, vmalloc tagging requires adding a few
    kasan_reset_tag() annotations to the vmalloc code.
    
    HW_TAGS vmalloc tagging support stands out.  HW_TAGS KASAN is based on Arm
    MTE, which can only assigns tags to physical memory.  As a result, HW_TAGS
    KASAN only tags vmalloc() allocations, which are backed by page_alloc
    memory.  It ignores vmap() and others.
    
    This patch (of 39):
    
    Currently, should_skip_kasan_poison() has two definitions: one for when
    CONFIG_DEFERRED_STRUCT_PAGE_INIT is enabled, one for when it's not.
    
    Instead of duplicating the checks, add a deferred_pages_enabled() helper
    and use it in a single should_skip_kasan_poison() definition.
    
    Also move should_skip_kasan_poison() closer to its caller and clarify all
    conditions in the comment.
    
    Link: https://lkml.kernel.org/r/cover.1643047180.git.andreyknvl@google.com
    Link: https://lkml.kernel.org/r/658b79f5fb305edaf7dc16bc52ea870d3220d4a8.1643047180.git.andreyknvl@google.comSigned-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Acked-by: default avatarMarco Elver <elver@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Collingbourne <pcc@google.com>
    Cc: Evgenii Stepanov <eugenis@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    94ae8b83
page_alloc.c 266 KB