lkml.org 
[lkml]   [2023]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 1/4] x86: kmsan: Don't rename memintrinsics in uninstrumented files
    On Wed, 1 Mar 2023 at 15:39, Alexander Potapenko <glider@google.com> wrote:
    >
    > KMSAN should be overriding calls to memset/memcpy/memmove and their

    You mean that the compiler will override calls?
    All supported compilers that have fsanitize=kernel-memory replace
    memintrinsics with __msan_mem*() calls, right?

    > __builtin_ versions in instrumented files, so there is no need to
    > override them. In non-instrumented versions we are now required to
    > leave memset() and friends intact, so we cannot replace them with
    > __msan_XXX() functions.
    >
    > Cc: Kees Cook <keescook@chromium.org>
    > Suggested-by: Marco Elver <elver@google.com>
    > Signed-off-by: Alexander Potapenko <glider@google.com>

    Other than that,

    Reviewed-by: Marco Elver <elver@google.com>

    > ---
    > arch/x86/include/asm/string_64.h | 17 -----------------
    > 1 file changed, 17 deletions(-)
    >
    > diff --git a/arch/x86/include/asm/string_64.h b/arch/x86/include/asm/string_64.h
    > index 888731ccf1f67..9be401d971a99 100644
    > --- a/arch/x86/include/asm/string_64.h
    > +++ b/arch/x86/include/asm/string_64.h
    > @@ -15,22 +15,11 @@
    > #endif
    >
    > #define __HAVE_ARCH_MEMCPY 1
    > -#if defined(__SANITIZE_MEMORY__) && defined(__NO_FORTIFY)
    > -#undef memcpy
    > -#define memcpy __msan_memcpy
    > -#else
    > extern void *memcpy(void *to, const void *from, size_t len);
    > -#endif
    > extern void *__memcpy(void *to, const void *from, size_t len);
    >
    > #define __HAVE_ARCH_MEMSET
    > -#if defined(__SANITIZE_MEMORY__) && defined(__NO_FORTIFY)
    > -extern void *__msan_memset(void *s, int c, size_t n);
    > -#undef memset
    > -#define memset __msan_memset
    > -#else
    > void *memset(void *s, int c, size_t n);
    > -#endif
    > void *__memset(void *s, int c, size_t n);
    >
    > #define __HAVE_ARCH_MEMSET16
    > @@ -70,13 +59,7 @@ static inline void *memset64(uint64_t *s, uint64_t v, size_t n)
    > }
    >
    > #define __HAVE_ARCH_MEMMOVE
    > -#if defined(__SANITIZE_MEMORY__) && defined(__NO_FORTIFY)
    > -#undef memmove
    > -void *__msan_memmove(void *dest, const void *src, size_t len);
    > -#define memmove __msan_memmove
    > -#else
    > void *memmove(void *dest, const void *src, size_t count);
    > -#endif
    > void *__memmove(void *dest, const void *src, size_t count);
    >
    > int memcmp(const void *cs, const void *ct, size_t count);
    > --
    > 2.39.2.722.g9855ee24e9-goog
    >

    \
     
     \ /
      Last update: 2023-03-27 00:41    [W:2.039 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site