diff options
author | Andrey Ryabinin <aryabinin@virtuozzo.com> | 2015-10-16 07:28:53 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-10-19 04:07:23 -0400 |
commit | a75ca545e8d57473da47ece828ad98a10727ec6f (patch) | |
tree | be029fd7305cda08ae0621621d044e78ab447ddd | |
parent | fcafddec4e78a7776db4b6685db6b2902d4300fc (diff) |
x86, kasan: Fix build failure on KASAN=y && KMEMCHECK=y kernels
Declaration of memcpy() is hidden under #ifndef CONFIG_KMEMCHECK.
In asm/efi.h under #ifdef CONFIG_KASAN we #undef memcpy(), due to
which the following happens:
In file included from arch/x86/kernel/setup.c:96:0:
./arch/x86/include/asm/desc.h: In function ‘native_write_idt_entry’:
./arch/x86/include/asm/desc.h:122:2: error: implicit declaration of function ‘memcpy’ [-Werror=implicit-function-declaration] memcpy(&idt[entry], gate, sizeof(*gate));
^
cc1: some warnings being treated as errors
make[2]: *** [arch/x86/kernel/setup.o] Error 1
We will get rid of that #undef in asm/efi.h eventually.
But in the meanwhile move memcpy() declaration out of #ifdefs
to fix the build.
Reported-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1444994933-28328-1-git-send-email-aryabinin@virtuozzo.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/include/asm/string_64.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/include/asm/string_64.h b/arch/x86/include/asm/string_64.h index e4661196994e..ff8b9a17dc4b 100644 --- a/arch/x86/include/asm/string_64.h +++ b/arch/x86/include/asm/string_64.h | |||
@@ -27,12 +27,11 @@ static __always_inline void *__inline_memcpy(void *to, const void *from, size_t | |||
27 | function. */ | 27 | function. */ |
28 | 28 | ||
29 | #define __HAVE_ARCH_MEMCPY 1 | 29 | #define __HAVE_ARCH_MEMCPY 1 |
30 | extern void *memcpy(void *to, const void *from, size_t len); | ||
30 | extern void *__memcpy(void *to, const void *from, size_t len); | 31 | extern void *__memcpy(void *to, const void *from, size_t len); |
31 | 32 | ||
32 | #ifndef CONFIG_KMEMCHECK | 33 | #ifndef CONFIG_KMEMCHECK |
33 | #if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4 | 34 | #if (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || __GNUC__ < 4 |
34 | extern void *memcpy(void *to, const void *from, size_t len); | ||
35 | #else | ||
36 | #define memcpy(dst, src, len) \ | 35 | #define memcpy(dst, src, len) \ |
37 | ({ \ | 36 | ({ \ |
38 | size_t __len = (len); \ | 37 | size_t __len = (len); \ |