Instrumenting some files with KMSAN will result in kernel being unable to link, boot or crashing at runtime for various reasons (e.g. infinite recursion caused by instrumentation hooks calling instrumented code again). Completely omit KMSAN instrumentation in the following places: - arch/x86/boot and arch/x86/realmode/rm, as KMSAN doesn't work for i386; - arch/x86/entry/vdso, which isn't linked with KMSAN runtime; - three files in arch/x86/kernel - boot problems; - arch/x86/mm/cpu_entry_area.c - recursion. Link: https://lkml.kernel.org/r/20220915150417.722975-33-glider@google.com Signed-off-by: Alexander Potapenko <glider@google.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Andrey Konovalov <andreyknvl@gmail.com> Cc: Andrey Konovalov <andreyknvl@google.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Borislav Petkov <bp@alien8.de> Cc: Christoph Hellwig <hch@lst.de> Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes <rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Eric Biggers <ebiggers@google.com> Cc: Eric Biggers <ebiggers@kernel.org> Cc: Eric Dumazet <edumazet@google.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Ilya Leoshkevich <iii@linux.ibm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Kees Cook <keescook@chromium.org> Cc: Marco Elver <elver@google.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Vegard Nossum <vegard.nossum@oracle.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
81 lines
2.3 KiB
Makefile
81 lines
2.3 KiB
Makefile
#
|
|
# arch/x86/realmode/Makefile
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
#
|
|
|
|
# Sanitizer runtimes are unavailable and cannot be linked here.
|
|
KASAN_SANITIZE := n
|
|
KCSAN_SANITIZE := n
|
|
KMSAN_SANITIZE := n
|
|
OBJECT_FILES_NON_STANDARD := y
|
|
|
|
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
|
|
KCOV_INSTRUMENT := n
|
|
|
|
always-y := realmode.bin realmode.relocs
|
|
|
|
wakeup-objs := wakeup_asm.o wakemain.o video-mode.o
|
|
wakeup-objs += copy.o bioscall.o regs.o
|
|
# The link order of the video-*.o modules can matter. In particular,
|
|
# video-vga.o *must* be listed first, followed by video-vesa.o.
|
|
# Hardware-specific drivers should follow in the order they should be
|
|
# probed, and video-bios.o should typically be last.
|
|
wakeup-objs += video-vga.o
|
|
wakeup-objs += video-vesa.o
|
|
wakeup-objs += video-bios.o
|
|
|
|
realmode-y += header.o
|
|
realmode-y += trampoline_$(BITS).o
|
|
realmode-y += stack.o
|
|
realmode-y += reboot.o
|
|
realmode-$(CONFIG_ACPI_SLEEP) += $(wakeup-objs)
|
|
|
|
targets += $(realmode-y)
|
|
|
|
REALMODE_OBJS = $(addprefix $(obj)/,$(realmode-y))
|
|
|
|
sed-pasyms := -n -r -e 's/^([0-9a-fA-F]+) [ABCDGRSTVW] (.+)$$/pa_\2 = \2;/p'
|
|
|
|
quiet_cmd_pasyms = PASYMS $@
|
|
cmd_pasyms = $(NM) $(real-prereqs) | sed $(sed-pasyms) | sort | uniq > $@
|
|
|
|
targets += pasyms.h
|
|
$(obj)/pasyms.h: $(REALMODE_OBJS) FORCE
|
|
$(call if_changed,pasyms)
|
|
|
|
targets += realmode.lds
|
|
$(obj)/realmode.lds: $(obj)/pasyms.h
|
|
|
|
LDFLAGS_realmode.elf := -m elf_i386 --emit-relocs -T
|
|
CPPFLAGS_realmode.lds += -P -C -I$(objtree)/$(obj)
|
|
|
|
targets += realmode.elf
|
|
$(obj)/realmode.elf: $(obj)/realmode.lds $(REALMODE_OBJS) FORCE
|
|
$(call if_changed,ld)
|
|
|
|
OBJCOPYFLAGS_realmode.bin := -O binary
|
|
|
|
targets += realmode.bin
|
|
$(obj)/realmode.bin: $(obj)/realmode.elf $(obj)/realmode.relocs FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
quiet_cmd_relocs = RELOCS $@
|
|
cmd_relocs = arch/x86/tools/relocs --realmode $< > $@
|
|
|
|
targets += realmode.relocs
|
|
$(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
|
|
$(call if_changed,relocs)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
|
|
-I$(srctree)/arch/x86/boot
|
|
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
|
|
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
|
GCOV_PROFILE := n
|
|
UBSAN_SANITIZE := n
|