Merge tag 'omap-for-v5.8/dt-missed-signed' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / include / linux / compiler.h
index 6d307c0..30827f8 100644 (file)
@@ -264,12 +264,12 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
  */
 #define data_race(expr)                                                        \
 ({                                                                     \
-       __kcsan_disable_current();                                      \
-       ({                                                              \
-               __unqual_scalar_typeof(({ expr; })) __v = ({ expr; });  \
-               __kcsan_enable_current();                               \
-               __v;                                                    \
+       __unqual_scalar_typeof(({ expr; })) __v = ({                    \
+               __kcsan_disable_current();                              \
+               expr;                                                   \
        });                                                             \
+       __kcsan_enable_current();                                       \
+       __v;                                                            \
 })
 
 /*
@@ -281,9 +281,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
 
 #define __READ_ONCE_SCALAR(x)                                          \
 ({                                                                     \
-       typeof(x) *__xp = &(x);                                         \
-       __unqual_scalar_typeof(x) __x = data_race(__READ_ONCE(*__xp));  \
-       kcsan_check_atomic_read(__xp, sizeof(*__xp));                   \
+       __unqual_scalar_typeof(x) __x = __READ_ONCE(x);                 \
        smp_read_barrier_depends();                                     \
        (typeof(x))__x;                                                 \
 })
@@ -299,48 +297,12 @@ do {                                                                      \
        *(volatile typeof(x) *)&(x) = (val);                            \
 } while (0)
 
-#define __WRITE_ONCE_SCALAR(x, val)                                    \
-do {                                                                   \
-       typeof(x) *__xp = &(x);                                         \
-       kcsan_check_atomic_write(__xp, sizeof(*__xp));                  \
-       data_race(({ __WRITE_ONCE(*__xp, val); 0; }));                  \
-} while (0)
-
 #define WRITE_ONCE(x, val)                                             \
 do {                                                                   \
        compiletime_assert_rwonce_type(x);                              \
-       __WRITE_ONCE_SCALAR(x, val);                                    \
+       __WRITE_ONCE(x, val);                                           \
 } while (0)
 
-#ifdef CONFIG_KASAN
-/*
- * We can't declare function 'inline' because __no_sanitize_address conflicts
- * with inlining. Attempt to inline it may cause a build failure.
- *     https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
- * '__maybe_unused' allows us to avoid defined-but-not-used warnings.
- */
-# define __no_kasan_or_inline __no_sanitize_address notrace __maybe_unused
-# define __no_sanitize_or_inline __no_kasan_or_inline
-#else
-# define __no_kasan_or_inline __always_inline
-#endif
-
-#define __no_kcsan __no_sanitize_thread
-#ifdef __SANITIZE_THREAD__
-/*
- * Rely on __SANITIZE_THREAD__ instead of CONFIG_KCSAN, to avoid not inlining in
- * compilation units where instrumentation is disabled.
- */
-# define __no_kcsan_or_inline __no_kcsan notrace __maybe_unused
-# define __no_sanitize_or_inline __no_kcsan_or_inline
-#else
-# define __no_kcsan_or_inline __always_inline
-#endif
-
-#ifndef __no_sanitize_or_inline
-#define __no_sanitize_or_inline __always_inline
-#endif
-
 static __no_sanitize_or_inline
 unsigned long __read_once_word_nocheck(const void *addr)
 {