From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from e28smtp05.in.ibm.com (e28smtp05.in.ibm.com [122.248.162.5]) (using TLSv1 with cipher CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 406501A1DA0 for ; Wed, 26 Aug 2015 18:26:59 +1000 (AEST) Received: from /spool/local by e28smtp05.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 26 Aug 2015 13:56:55 +0530 Received: from d28relay04.in.ibm.com (d28relay04.in.ibm.com [9.184.220.61]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id 820AB125806C for ; Wed, 26 Aug 2015 13:56:12 +0530 (IST) Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay04.in.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t7Q8Qgvl27001078 for ; Wed, 26 Aug 2015 13:56:43 +0530 Received: from d28av05.in.ibm.com (localhost [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t7Q8QeIF025262 for ; Wed, 26 Aug 2015 13:56:41 +0530 From: "Aneesh Kumar K.V" To: benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au, ryabinin.a.a@gmail.com Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, "Aneesh Kumar K.V" Subject: [PATCH V2 07/10] kasan: Make INLINE KASan support arch selectable Date: Wed, 26 Aug 2015 13:56:15 +0530 Message-Id: <1440577578-15813-8-git-send-email-aneesh.kumar@linux.vnet.ibm.com> In-Reply-To: <1440577578-15813-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> References: <1440577578-15813-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Some of the archs, may find it difficult to support inline KASan mode. Add HAVE_ARCH_KASAN_INLINE so that we can disable inline support at config time. Signed-off-by: Aneesh Kumar K.V --- arch/x86/Kconfig | 1 + lib/Kconfig.kasan | 2 ++ scripts/Makefile.kasan | 28 ++++++++++++++-------------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b3a1a5d77d92..4416f80580fb 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -78,6 +78,7 @@ config X86 select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KASAN if X86_64 && SPARSEMEM_VMEMMAP + select HAVE_ARCH_KASAN_INLINE if X86_64 && SPARSEMEM_VMEMMAP select HAVE_ARCH_KGDB select HAVE_ARCH_KMEMCHECK select HAVE_ARCH_SECCOMP_FILTER diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan index 39f24d6721e5..e9d1bb1175b8 100644 --- a/lib/Kconfig.kasan +++ b/lib/Kconfig.kasan @@ -32,6 +32,7 @@ config KASAN_OUTLINE however it doesn't bloat size of kernel's .text section so much as inline does. +if HAVE_ARCH_KASAN_INLINE config KASAN_INLINE bool "Inline instrumentation" help @@ -40,6 +41,7 @@ config KASAN_INLINE it gives about x2 boost over outline instrumentation), but make kernel's .text size much bigger. This requires a gcc version of 5.0 or later. +endif endchoice diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan index 3f874d24234f..c1c06e9e107a 100644 --- a/scripts/Makefile.kasan +++ b/scripts/Makefile.kasan @@ -1,29 +1,29 @@ ifdef CONFIG_KASAN -ifdef CONFIG_KASAN_INLINE - call_threshold := 10000 -else - call_threshold := 0 -endif - -CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \ - -fasan-shadow-offset=$(CONFIG_KASAN_SHADOW_OFFSET) \ - --param asan-stack=1 --param asan-globals=1 \ - --param asan-instrumentation-with-call-threshold=$(call_threshold)) - -ifeq ($(call cc-option, $(CFLAGS_KASAN_MINIMAL) -Werror),) + --param asan-instrumentation-with-call-threshold=0) +ifeq ($(CFLAGS_KASAN),) ifneq ($(CONFIG_COMPILE_TEST),y) $(warning Cannot use CONFIG_KASAN: \ -fsanitize=kernel-address is not supported by compiler) endif else - ifeq ($(CFLAGS_KASAN),) + + ifdef CONFIG_KASAN_INLINE + CFLAGS_KASAN_INLINE := $(call cc-option, -fsanitize=kernel-address \ + -fasan-shadow-offset=$(CONFIG_KASAN_SHADOW_OFFSET) \ + --param asan-stack=1 --param asan-globals=1 \ + --param asan-instrumentation-with-call-threshold=10000) + + ifeq ($(CFLAGS_KASAN_INLINE),) ifneq ($(CONFIG_COMPILE_TEST),y) $(warning CONFIG_KASAN: compiler does not support all options.\ Trying minimal configuration) endif - CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL) + else + CFLAGS_KASAN := $(CFLAGS_KASAN_INLINE) endif + endif + endif endif -- 2.5.0