mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
85f195b12d
The tests for memset/memmove have been failing since they haven't been instrumented in 69d4c0d32186. Fix the test to recognize when memintrinsics aren't instrumented, and skip test cases accordingly. We also need to conditionally pass -fno-builtin to the test, otherwise the instrumentation pass won't recognize memintrinsics and end up not instrumenting them either. Link: https://lkml.kernel.org/r/20230224085942.1791837-3-elver@google.com Fixes: 69d4c0d32186 ("entry, kasan, x86: Disallow overriding mem*() functions") Reported-by: Linux Kernel Functional Testing <lkft@linaro.org> Signed-off-by: Marco Elver <elver@google.com> Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org> Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com> Cc: Borislav Petkov (AMD) <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jakub Jelinek <jakub@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Nicolas Schier <nicolas@fjasle.eu> Cc: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vincenzo Frascino <vincenzo.frascino@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
57 lines
2.4 KiB
Makefile
57 lines
2.4 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
KASAN_SANITIZE := n
|
|
UBSAN_SANITIZE := n
|
|
KCOV_INSTRUMENT := n
|
|
|
|
# Disable ftrace to avoid recursion.
|
|
CFLAGS_REMOVE_common.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_generic.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_quarantine.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_report_generic.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_report_hw_tags.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_report_sw_tags.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_hw_tags.o = $(CC_FLAGS_FTRACE)
|
|
CFLAGS_REMOVE_sw_tags.o = $(CC_FLAGS_FTRACE)
|
|
|
|
# Function splitter causes unnecessary splits in __asan_load1/__asan_store1
|
|
# see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
|
|
CC_FLAGS_KASAN_RUNTIME := $(call cc-option, -fno-conserve-stack)
|
|
CC_FLAGS_KASAN_RUNTIME += -fno-stack-protector
|
|
# Disable branch tracing to avoid recursion.
|
|
CC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PROFILING
|
|
|
|
CFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_report_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_report_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_report_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
CFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
|
|
|
|
CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-disable-warning, vla)
|
|
ifndef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX
|
|
# If compiler instruments memintrinsics by prefixing them with __asan/__hwasan,
|
|
# we need to treat them normally (as builtins), otherwise the compiler won't
|
|
# recognize them as instrumentable. If it doesn't instrument them, we need to
|
|
# pass -fno-builtin, so the compiler doesn't inline them.
|
|
CFLAGS_KASAN_TEST += -fno-builtin
|
|
endif
|
|
|
|
CFLAGS_kasan_test.o := $(CFLAGS_KASAN_TEST)
|
|
CFLAGS_kasan_test_module.o := $(CFLAGS_KASAN_TEST)
|
|
|
|
obj-y := common.o report.o
|
|
obj-$(CONFIG_KASAN_GENERIC) += init.o generic.o report_generic.o shadow.o quarantine.o
|
|
obj-$(CONFIG_KASAN_HW_TAGS) += hw_tags.o report_hw_tags.o tags.o report_tags.o
|
|
obj-$(CONFIG_KASAN_SW_TAGS) += init.o report_sw_tags.o shadow.o sw_tags.o tags.o report_tags.o
|
|
|
|
obj-$(CONFIG_KASAN_KUNIT_TEST) += kasan_test.o
|
|
obj-$(CONFIG_KASAN_MODULE_TEST) += kasan_test_module.o
|