diff options
Diffstat (limited to 'arch/powerpc/include/asm/string.h')
-rw-r--r-- | arch/powerpc/include/asm/string.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/arch/powerpc/include/asm/string.h b/arch/powerpc/include/asm/string.h index 1647de15a31e..9bf6dffb4090 100644 --- a/arch/powerpc/include/asm/string.h +++ b/arch/powerpc/include/asm/string.h | |||
@@ -4,14 +4,17 @@ | |||
4 | 4 | ||
5 | #ifdef __KERNEL__ | 5 | #ifdef __KERNEL__ |
6 | 6 | ||
7 | #ifndef CONFIG_KASAN | ||
7 | #define __HAVE_ARCH_STRNCPY | 8 | #define __HAVE_ARCH_STRNCPY |
8 | #define __HAVE_ARCH_STRNCMP | 9 | #define __HAVE_ARCH_STRNCMP |
10 | #define __HAVE_ARCH_MEMCHR | ||
11 | #define __HAVE_ARCH_MEMCMP | ||
12 | #define __HAVE_ARCH_MEMSET16 | ||
13 | #endif | ||
14 | |||
9 | #define __HAVE_ARCH_MEMSET | 15 | #define __HAVE_ARCH_MEMSET |
10 | #define __HAVE_ARCH_MEMCPY | 16 | #define __HAVE_ARCH_MEMCPY |
11 | #define __HAVE_ARCH_MEMMOVE | 17 | #define __HAVE_ARCH_MEMMOVE |
12 | #define __HAVE_ARCH_MEMCMP | ||
13 | #define __HAVE_ARCH_MEMCHR | ||
14 | #define __HAVE_ARCH_MEMSET16 | ||
15 | #define __HAVE_ARCH_MEMCPY_FLUSHCACHE | 18 | #define __HAVE_ARCH_MEMCPY_FLUSHCACHE |
16 | 19 | ||
17 | extern char * strcpy(char *,const char *); | 20 | extern char * strcpy(char *,const char *); |
@@ -27,7 +30,27 @@ extern int memcmp(const void *,const void *,__kernel_size_t); | |||
27 | extern void * memchr(const void *,int,__kernel_size_t); | 30 | extern void * memchr(const void *,int,__kernel_size_t); |
28 | extern void * memcpy_flushcache(void *,const void *,__kernel_size_t); | 31 | extern void * memcpy_flushcache(void *,const void *,__kernel_size_t); |
29 | 32 | ||
33 | void *__memset(void *s, int c, __kernel_size_t count); | ||
34 | void *__memcpy(void *to, const void *from, __kernel_size_t n); | ||
35 | void *__memmove(void *to, const void *from, __kernel_size_t n); | ||
36 | |||
37 | #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__) | ||
38 | /* | ||
39 | * For files that are not instrumented (e.g. mm/slub.c) we | ||
40 | * should use not instrumented version of mem* functions. | ||
41 | */ | ||
42 | #define memcpy(dst, src, len) __memcpy(dst, src, len) | ||
43 | #define memmove(dst, src, len) __memmove(dst, src, len) | ||
44 | #define memset(s, c, n) __memset(s, c, n) | ||
45 | |||
46 | #ifndef __NO_FORTIFY | ||
47 | #define __NO_FORTIFY /* FORTIFY_SOURCE uses __builtin_memcpy, etc. */ | ||
48 | #endif | ||
49 | |||
50 | #endif | ||
51 | |||
30 | #ifdef CONFIG_PPC64 | 52 | #ifdef CONFIG_PPC64 |
53 | #ifndef CONFIG_KASAN | ||
31 | #define __HAVE_ARCH_MEMSET32 | 54 | #define __HAVE_ARCH_MEMSET32 |
32 | #define __HAVE_ARCH_MEMSET64 | 55 | #define __HAVE_ARCH_MEMSET64 |
33 | 56 | ||
@@ -49,8 +72,11 @@ static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n) | |||
49 | { | 72 | { |
50 | return __memset64(p, v, n * 8); | 73 | return __memset64(p, v, n * 8); |
51 | } | 74 | } |
75 | #endif | ||
52 | #else | 76 | #else |
77 | #ifndef CONFIG_KASAN | ||
53 | #define __HAVE_ARCH_STRLEN | 78 | #define __HAVE_ARCH_STRLEN |
79 | #endif | ||
54 | 80 | ||
55 | extern void *memset16(uint16_t *, uint16_t, __kernel_size_t); | 81 | extern void *memset16(uint16_t *, uint16_t, __kernel_size_t); |
56 | #endif | 82 | #endif |