On Thu, Oct 17, 2019 at 04:13:04PM +0200, Marco Elver wrote: > This adds KCSAN instrumentation to atomic-instrumented.h. > > Signed-off-by: Marco Elver <elver@xxxxxxxxxx> > --- > v2: > * Use kcsan_check{,_atomic}_{read,write} instead of > kcsan_check_{access,atomic}. > * Introduce __atomic_check_{read,write} [Suggested by Mark Rutland]. > --- > include/asm-generic/atomic-instrumented.h | 393 +++++++++++----------- > scripts/atomic/gen-atomic-instrumented.sh | 17 +- > 2 files changed, 218 insertions(+), 192 deletions(-) The script changes and generated code look fine to me, so FWIW: Reviewed-by: Mark Rutland <mark.rutland@xxxxxxx> Thanks, Mark. > diff --git a/scripts/atomic/gen-atomic-instrumented.sh b/scripts/atomic/gen-atomic-instrumented.sh > index e09812372b17..8b8b2a6f8d68 100755 > --- a/scripts/atomic/gen-atomic-instrumented.sh > +++ b/scripts/atomic/gen-atomic-instrumented.sh > @@ -20,7 +20,7 @@ gen_param_check() > # We don't write to constant parameters > [ ${type#c} != ${type} ] && rw="read" > > - printf "\tkasan_check_${rw}(${name}, sizeof(*${name}));\n" > + printf "\t__atomic_check_${rw}(${name}, sizeof(*${name}));\n" > } > > #gen_param_check(arg...) > @@ -107,7 +107,7 @@ cat <<EOF > #define ${xchg}(ptr, ...) \\ > ({ \\ > typeof(ptr) __ai_ptr = (ptr); \\ > - kasan_check_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\ > + __atomic_check_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\ > arch_${xchg}(__ai_ptr, __VA_ARGS__); \\ > }) > EOF > @@ -148,6 +148,19 @@ cat << EOF > > #include <linux/build_bug.h> > #include <linux/kasan-checks.h> > +#include <linux/kcsan-checks.h> > + > +static inline void __atomic_check_read(const volatile void *v, size_t size) > +{ > + kasan_check_read(v, size); > + kcsan_check_atomic_read(v, size); > +} > + > +static inline void __atomic_check_write(const volatile void *v, size_t size) > +{ > + kasan_check_write(v, size); > + kcsan_check_atomic_write(v, size); > +} > > EOF > > -- > 2.23.0.866.gb869b98d4c-goog >