Like other architectures, always declare __mem*() functions if the architecture defines __HAVE_ARCH_MEM*. For example, this is required by sanitizer runtimes to unambiguously refer to the arch versions of the mem-functions, and the compiler not attempting any "optimizations" such as replacing the calls with builtins (which may later be inlined etc.). Signed-off-by: Marco Elver <elver@xxxxxxxxxx> --- v2: * New patch. --- arch/s390/include/asm/string.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/arch/s390/include/asm/string.h b/arch/s390/include/asm/string.h index 3fae93ddb322..2c3c48d526b9 100644 --- a/arch/s390/include/asm/string.h +++ b/arch/s390/include/asm/string.h @@ -20,8 +20,11 @@ #define __HAVE_ARCH_MEMSET64 /* arch function */ void *memcpy(void *dest, const void *src, size_t n); +void *__memcpy(void *dest, const void *src, size_t n); void *memset(void *s, int c, size_t n); +void *__memset(void *s, int c, size_t n); void *memmove(void *dest, const void *src, size_t n); +void *__memmove(void *dest, const void *src, size_t n); #ifndef CONFIG_KASAN #define __HAVE_ARCH_MEMCHR /* inline & arch function */ @@ -55,10 +58,6 @@ char *strstr(const char *s1, const char *s2); #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__) -extern void *__memcpy(void *dest, const void *src, size_t n); -extern void *__memset(void *s, int c, size_t n); -extern void *__memmove(void *dest, const void *src, size_t n); - /* * For files that are not instrumented (e.g. mm/slub.c) we * should use not instrumented version of mem* functions. -- 2.37.2.789.g6183377224-goog