On 04/12/2018 08:29 PM, Andrey Konovalov wrote: > KASAN uses the __no_sanitize_address macro to disable instrumentation > of particular functions. Right now it's defined only for GCC build, > which causes false positives when clang is used. > > This patch adds a definition for clang. > > Note, that clang's revision 329612 or higher is required. > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxxx> > --- > include/linux/compiler-clang.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > index ceb96ecab96e..5a1d8580febe 100644 > --- a/include/linux/compiler-clang.h > +++ b/include/linux/compiler-clang.h > @@ -25,6 +25,11 @@ > #define __SANITIZE_ADDRESS__ > #endif > > +#ifdef CONFIG_KASAN If, for whatever reason, developer decides to add __no_sanitize_address to some generic function, guess what will happen next when he/she will try to build CONFIG_KASAN=n kernel? > +#undef __no_sanitize_address > +#define __no_sanitize_address __attribute__((no_sanitize("address"))) > +#endif > + > /* Clang doesn't have a way to turn it off per-function, yet. */ > #ifdef __noretpoline > #undef __noretpoline >