Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754590AbbGXQmc (ORCPT ); Fri, 24 Jul 2015 12:42:32 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:50180 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753030AbbGXQm3 (ORCPT ); Fri, 24 Jul 2015 12:42:29 -0400 X-AuditID: cbfec7f4-f79c56d0000012ee-32-55b26af2cc3d From: Andrey Ryabinin To: Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org Cc: Arnd Bergmann , Linus Walleij , David Keitel , Alexander Potapenko , Andrew Morton , Dmitry Vyukov , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Alexey Klimov , Andrey Ryabinin , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Michal Marek , linux-kbuild@vger.kernel.org Subject: [PATCH v4 1/7] x86/kasan: generate KASAN_SHADOW_OFFSET in Makefile Date: Fri, 24 Jul 2015 19:41:53 +0300 Message-id: <1437756119-12817-2-git-send-email-a.ryabinin@samsung.com> X-Mailer: git-send-email 2.4.5 In-reply-to: <1437756119-12817-1-git-send-email-a.ryabinin@samsung.com> References: <1437756119-12817-1-git-send-email-a.ryabinin@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmkeLIzCtJLcpLzFFi42I5/e/4Zd3PWZtCDW40Mlps+/WIzWLO+jVs Fn8nHWO3eL+sh9Fi96VnzBYTHraxW7R/3MtsMW2juMWp8w9ZLKb8Wc5ksenxNVaLP7t2MFlc 3jWHzeLemv+sFpcOLGCymNM6i81i86apzBYvP55gsfix4TGrg7DHmnlrGD1+/5rE6HG5r5fJ Y+esu+weCzaVemxa1cnmsenTJHaPO9f2sHm8O3eO3ePEjN8sHpuX1Hu833eVzaNvyypGj/Vb rrJ4fN4k53Gi5QtrgEAUl01Kak5mWWqRvl0CV8bPl3/YC7bLVfzdfI69gfGfRBcjJ4eEgInE 89/PWSFsMYkL99azdTFycQgJLGWU6NzeBeU0MUmsO3OCBaSKTUBP4t+s7WwgtohAhcTVqxMY QYqYBbaxSHyaf48dJCEs4C3xouMzI4jNIqAqMal3BhOIzSvgJrH5xUygdRxA6+QkljbXgoQ5 Bdwlmh6dZQEJCwGVLNgoNIGRdwEjwypG0dTS5ILipPRcQ73ixNzi0rx0veT83E2MkKj5soNx 8TGrQ4wCHIxKPLwHJm0MFWJNLCuuzD3EKMHBrCTC6+C5KVSINyWxsiq1KD++qDQntfgQozQH i5I479xd70OEBNITS1KzU1MLUotgskwcnFINjFymbP4iLp2eXNNXvJKZ/jpuD9fGJ+c+LWsT vrRHi6tH3rJGKjlQeePKBt4jqxjnmLbb/f+ZJijm9lJ6w+quw4abeW71qN6MdTj+peld4del 05ZMZzg8MbRgRxS3uxhDX/ju3iPmPX6GN7RPKTh8s1zzrvL43EKH5g0yjC1JlS22F5dtunrp uRJLcUaioRZzUXEiAMPpH/+WAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4028 Lines: 117 ARM64 has several different address space layouts and its going to have one more at least. Different address space layouts have different shadow offsets, so every new layout require adding new default value for CONFIG_KASAN_SHADOW_OFFSET. It's possible to generate KASAN_SHADOW_OFFSET in Makefile, so the shadow address for every possible layout will be auto-generated. However, we should do this in x86 too, because generic code depend on having CONFIG_KASAN_SHADOW_OFFSET. There is no functional changes here. Signed-off-by: Andrey Ryabinin --- arch/x86/Kconfig | 5 ----- arch/x86/Makefile | 2 ++ arch/x86/include/asm/kasan.h | 21 +++++++++++++-------- include/linux/kasan.h | 1 - scripts/Makefile.kasan | 2 +- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b3a1a5d..6d6dd6f 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -255,11 +255,6 @@ config ARCH_SUPPORTS_OPTIMIZED_INLINING config ARCH_SUPPORTS_DEBUG_PAGEALLOC def_bool y -config KASAN_SHADOW_OFFSET - hex - depends on KASAN - default 0xdffffc0000000000 - config HAVE_INTEL_TXT def_bool y depends on INTEL_IOMMU && ACPI diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 118e6de..c666989 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -39,6 +39,8 @@ ifdef CONFIG_X86_NEED_RELOCS LDFLAGS_vmlinux := --emit-relocs endif +KASAN_SHADOW_OFFSET := 0xdffffc0000000000 + ifeq ($(CONFIG_X86_32),y) BITS := 32 UTS_MACHINE := i386 diff --git a/arch/x86/include/asm/kasan.h b/arch/x86/include/asm/kasan.h index 74a2a8d..88881f6 100644 --- a/arch/x86/include/asm/kasan.h +++ b/arch/x86/include/asm/kasan.h @@ -1,17 +1,22 @@ #ifndef _ASM_X86_KASAN_H #define _ASM_X86_KASAN_H -/* - * Compiler uses shadow offset assuming that addresses start - * from 0. Kernel addresses don't start from 0, so shadow - * for kernel really starts from compiler's shadow offset + - * 'kernel address space start' >> KASAN_SHADOW_SCALE_SHIFT - */ -#define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \ - (0xffff800000000000ULL >> 3)) +#define KASAN_SHADOW_START (0xffffec0000000000ULL) /* 47 bits for kernel address -> (47 - 3) bits for shadow */ #define KASAN_SHADOW_END (KASAN_SHADOW_START + (1ULL << (47 - 3))) +/* + * This value is used to map an address to the corresponding shadow + * address by the following formula: + * shadow_addr = (address >> 3) + KASAN_SHADOW_OFFSET; + * + * (1 << 61) shadow addresses - [KASAN_SHADOW_OFFSET,KASAN_SHADOW_END] + * cover all 64-bits of virtual addresses. So KASAN_SHADOW_OFFSET + * should satisfy the following equation: + * KASAN_SHADOW_OFFSET = KASAN_SHADOW_END - (1ULL << 61) + */ +#define KASAN_SHADOW_OFFSET (KASAN_SHADOW_END - (1UL << (64 - 3))) + #ifndef __ASSEMBLY__ #ifdef CONFIG_KASAN diff --git a/include/linux/kasan.h b/include/linux/kasan.h index 5486d77..6fb1c7d 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -10,7 +10,6 @@ struct vm_struct; #ifdef CONFIG_KASAN #define KASAN_SHADOW_SCALE_SHIFT 3 -#define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL) #include #include diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan index 3f874d2..19d9a61 100644 --- a/scripts/Makefile.kasan +++ b/scripts/Makefile.kasan @@ -8,7 +8,7 @@ endif CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \ - -fasan-shadow-offset=$(CONFIG_KASAN_SHADOW_OFFSET) \ + -fasan-shadow-offset=$(KASAN_SHADOW_OFFSET) \ --param asan-stack=1 --param asan-globals=1 \ --param asan-instrumentation-with-call-threshold=$(call_threshold)) -- 2.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/