mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 04:47:05 +00:00
x86: kmsan: use C versions of memset16/memset32/memset64
KMSAN must see as many memory accesses as possible to prevent false positive reports. Fall back to versions of memset16()/memset32()/memset64() implemented in lib/string.c instead of those written in assembly. Link: https://lkml.kernel.org/r/20230303141433.3422671-3-glider@google.com Signed-off-by: Alexander Potapenko <glider@google.com> Suggested-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Reviewed-by: Marco Elver <elver@google.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Helge Deller <deller@gmx.de> Cc: Kees Cook <keescook@chromium.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
d340292553
commit
27f644dc5a
1 changed files with 6 additions and 0 deletions
|
@ -22,6 +22,11 @@ extern void *__memcpy(void *to, const void *from, size_t len);
|
|||
void *memset(void *s, int c, size_t n);
|
||||
void *__memset(void *s, int c, size_t n);
|
||||
|
||||
/*
|
||||
* KMSAN needs to instrument as much code as possible. Use C versions of
|
||||
* memsetXX() from lib/string.c under KMSAN.
|
||||
*/
|
||||
#if !defined(CONFIG_KMSAN)
|
||||
#define __HAVE_ARCH_MEMSET16
|
||||
static inline void *memset16(uint16_t *s, uint16_t v, size_t n)
|
||||
{
|
||||
|
@ -57,6 +62,7 @@ static inline void *memset64(uint64_t *s, uint64_t v, size_t n)
|
|||
: "memory");
|
||||
return s;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define __HAVE_ARCH_MEMMOVE
|
||||
void *memmove(void *dest, const void *src, size_t count);
|
||||
|
|
Loading…
Reference in a new issue