From: Greg Kroah-Hartman Date: Thu, 16 Aug 2018 15:20:15 +0000 (+0200) Subject: 4.9-stable patches X-Git-Tag: v3.18.119~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=460ec0854b086e9d2ea0e2263d488a1bff808310;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: kasan-don-t-emit-builtin-calls-when-sanitization-is-off.patch --- diff --git a/queue-4.9/kasan-don-t-emit-builtin-calls-when-sanitization-is-off.patch b/queue-4.9/kasan-don-t-emit-builtin-calls-when-sanitization-is-off.patch new file mode 100644 index 00000000000..53279bfaf9c --- /dev/null +++ b/queue-4.9/kasan-don-t-emit-builtin-calls-when-sanitization-is-off.patch @@ -0,0 +1,78 @@ +From 0e410e158e5baa1300bdf678cea4f4e0cf9d8b94 Mon Sep 17 00:00:00 2001 +From: Andrey Konovalov +Date: Tue, 6 Feb 2018 15:36:00 -0800 +Subject: kasan: don't emit builtin calls when sanitization is off + +From: Andrey Konovalov + +commit 0e410e158e5baa1300bdf678cea4f4e0cf9d8b94 upstream. + +With KASAN enabled the kernel has two different memset() functions, one +with KASAN checks (memset) and one without (__memset). KASAN uses some +macro tricks to use the proper version where required. For example +memset() calls in mm/slub.c are without KASAN checks, since they operate +on poisoned slab object metadata. + +The issue is that clang emits memset() calls even when there is no +memset() in the source code. They get linked with improper memset() +implementation and the kernel fails to boot due to a huge amount of KASAN +reports during early boot stages. + +The solution is to add -fno-builtin flag for files with KASAN_SANITIZE := +n marker. + +Link: http://lkml.kernel.org/r/8ffecfffe04088c52c42b92739c2bd8a0bcb3f5e.1516384594.git.andreyknvl@google.com +Signed-off-by: Andrey Konovalov +Acked-by: Nick Desaulniers +Cc: Masahiro Yamada +Cc: Michal Marek +Cc: Andrey Ryabinin +Cc: Alexander Potapenko +Cc: Dmitry Vyukov +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +[ Sami: Backported to 4.9 avoiding c5caf21ab0cf8 and e7c52b84fb ] +Signed-off-by: Sami Tolvanen +Signed-off-by: Nick Desaulniers +Signed-off-by: Greg Kroah-Hartman + +--- + Makefile | 3 ++- + scripts/Makefile.kasan | 3 +++ + scripts/Makefile.lib | 2 +- + 3 files changed, 6 insertions(+), 2 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -417,7 +417,8 @@ export MAKE AWK GENKSYMS INSTALLKERNEL P + export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS + + export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS +-export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_KASAN CFLAGS_UBSAN ++export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE ++export CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE CFLAGS_UBSAN + export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE + export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE + export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL +--- a/scripts/Makefile.kasan ++++ b/scripts/Makefile.kasan +@@ -28,4 +28,7 @@ else + CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL) + endif + endif ++ ++CFLAGS_KASAN_NOSANITIZE := -fno-builtin ++ + endif +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -127,7 +127,7 @@ endif + ifeq ($(CONFIG_KASAN),y) + _c_flags += $(if $(patsubst n%,, \ + $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \ +- $(CFLAGS_KASAN)) ++ $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE)) + endif + + ifeq ($(CONFIG_UBSAN),y) diff --git a/queue-4.9/series b/queue-4.9/series index 1ecc038ab29..24b6ed3b7dd 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -1,3 +1,4 @@ x86-l1tf-fix-build-error-seen-if-config_kvm_intel-is-disabled.patch x86-i8259-add-missing-include-file.patch x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch +kasan-don-t-emit-builtin-calls-when-sanitization-is-off.patch