Skip to content
  • Mark Rutland's avatar
    kasan/arm64: fix CONFIG_KASAN_SW_TAGS && KASAN_INLINE · 34b5560d
    Mark Rutland authored
    The generic Makefile.kasan propagates CONFIG_KASAN_SHADOW_OFFSET into
    KASAN_SHADOW_OFFSET, but only does so for CONFIG_KASAN_GENERIC.
    
    Since commit:
    
      6bd1d0be
    
     ("arm64: kasan: Switch to using KASAN_SHADOW_OFFSET")
    
    ... arm64 defines CONFIG_KASAN_SHADOW_OFFSET in Kconfig rather than
    defining KASAN_SHADOW_OFFSET in a Makefile. Thus, if
    CONFIG_KASAN_SW_TAGS && KASAN_INLINE are selected, we get build time
    splats due to KASAN_SHADOW_OFFSET not being set:
    
    | [mark@lakrids:~/src/linux]% usellvm 8.0.1 usekorg 8.1.0  make ARCH=arm64 CROSS_COMPILE=aarch64-linux- CC=clang
    | scripts/kconfig/conf  --syncconfig Kconfig
    |   CC      scripts/mod/empty.o
    | clang (LLVM option parsing): for the -hwasan-mapping-offset option: '' value invalid for uint argument!
    | scripts/Makefile.build:273: recipe for target 'scripts/mod/empty.o' failed
    | make[1]: *** [scripts/mod/empty.o] Error 1
    | Makefile:1123: recipe for target 'prepare0' failed
    | make: *** [prepare0] Error 2
    
    Let's fix this by always propagating CONFIG_KASAN_SHADOW_OFFSET into
    KASAN_SHADOW_OFFSET if CONFIG_KASAN is selected, moving the existing
    common definition of +CFLAGS_KASAN_NOSANITIZE to the top of
    Makefile.kasan.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
    Tested-by Steve Capper <steve.capper@arm.com>
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    34b5560d