]> Git Repo - J-linux.git/commitdiff
Merge tag 'kcsan.2024.05.10a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmc...
authorLinus Torvalds <[email protected]>
Mon, 13 May 2024 17:13:39 +0000 (10:13 -0700)
committerLinus Torvalds <[email protected]>
Mon, 13 May 2024 17:13:39 +0000 (10:13 -0700)
Pull kcsan update from Paul McKenney:
 "Introduce __data_racy type qualifier

  This adds a __data_racy type qualifier that enables kernel developers
  to inform KCSAN that a given variable is a shared variable without
  needing to mark each and every access.

  This allows pre-KCSAN code to be correctly (if approximately)
  instrumented withh very little effort, and also provides people
  reading the code a clear indication that the variable is in fact
  shared.

  In addition, it permits incremental transition to per-access KCSAN
  marking, so that (for example) a given subsystem can be transitioned
  one variable at a time, while avoiding large numbers of KCSAN warnings
  during this transition"

* tag 'kcsan.2024.05.10a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
  kcsan, compiler_types: Introduce __data_racy type qualifier

1  2 
include/linux/compiler_types.h

index 8f8236317d5b15b97d059f3684e16d9ddb247317,a38162a8590df535c370ecfcc1e58ff25a910245..774c2570fe510f9ac07e138a13e8e8455de6373e
@@@ -273,22 -273,18 +273,29 @@@ struct ftrace_likely_data 
   * disable all instrumentation. See Kconfig.kcsan where this is mandatory.
   */
  # define __no_kcsan __no_sanitize_thread __disable_sanitizer_instrumentation
+ /*
+  * Type qualifier to mark variables where all data-racy accesses should be
+  * ignored by KCSAN. Note, the implementation simply marks these variables as
+  * volatile, since KCSAN will treat such accesses as "marked".
+  */
+ # define __data_racy volatile
  # define __no_sanitize_or_inline __no_kcsan notrace __maybe_unused
  #else
  # define __no_kcsan
+ # define __data_racy
  #endif
  
 +#ifdef __SANITIZE_MEMORY__
 +/*
 + * Similarly to KASAN and KCSAN, KMSAN loses function attributes of inlined
 + * functions, therefore disabling KMSAN checks also requires disabling inlining.
 + *
 + * __no_sanitize_or_inline effectively prevents KMSAN from reporting errors
 + * within the function and marks all its outputs as initialized.
 + */
 +# define __no_sanitize_or_inline __no_kmsan_checks notrace __maybe_unused
 +#endif
 +
  #ifndef __no_sanitize_or_inline
  #define __no_sanitize_or_inline __always_inline
  #endif
This page took 0.055482 seconds and 4 git commands to generate.