On Wed, Mar 25, 2020 at 5:13 PM <glider@xxxxxxxxxx> wrote: > > __no_sanitize_memory is a function attribute that makes KMSAN > ignore the uninitialized values coming from the function's > inputs, and initialize the function's outputs. > > Functions marked with this attribute can't be inlined into functions > not marked with it, and vice versa. > > __SANITIZE_MEMORY__ is a macro that's defined iff the file is > instrumented with KMSAN. This is not the same as CONFIG_KMSAN, which is > defined for every file. > > Signed-off-by: Alexander Potapenko <glider@xxxxxxxxxx> > To: Alexander Potapenko <glider@xxxxxxxxxx> > Cc: Vegard Nossum <vegard.nossum@xxxxxxxxxx> > Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > Cc: Marco Elver <elver@xxxxxxxxxx> > Cc: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > Cc: linux-mm@xxxxxxxxx > Acked-by: Marco Elver <elver@xxxxxxxxxx> Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > > --- > > v4: > - dropped an unnecessary comment as requested by Marco Elver > > Change-Id: I1f1672652c8392f15f7ca8ac26cd4e71f9cc1e4b > --- > include/linux/compiler-clang.h | 7 +++++++ > include/linux/compiler-gcc.h | 5 +++++ > 2 files changed, 12 insertions(+) > > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > index 2cb42d8bdedc6..d4f929b4a6705 100644 > --- a/include/linux/compiler-clang.h > +++ b/include/linux/compiler-clang.h > @@ -33,6 +33,13 @@ > #define __no_sanitize_thread > #endif > > +#if __has_feature(memory_sanitizer) > +# define __SANITIZE_MEMORY__ > +# define __no_sanitize_memory __attribute__((no_sanitize("kernel-memory"))) > +#else > +# define __no_sanitize_memory > +#endif > + > /* > * Not all versions of clang implement the the type-generic versions > * of the builtin overflow checkers. Fortunately, clang implements > diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h > index cf294faec2f87..1121557252f88 100644 > --- a/include/linux/compiler-gcc.h > +++ b/include/linux/compiler-gcc.h > @@ -151,6 +151,11 @@ > #define __no_sanitize_thread > #endif > > +/* > + * GCC doesn't support KMSAN. > + */ > +#define __no_sanitize_memory > + > #if GCC_VERSION >= 50100 > #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1 > #endif > -- > 2.25.1.696.g5e7596f4ac-goog >