aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/linux
diff options
context:
space:
mode:
authorMarco Elver <elver@google.com>2020-05-21 16:20:45 +0200
committerThomas Gleixner <tglx@linutronix.de>2020-06-11 20:04:03 +0200
commit95c094fccb85422eff3c12930ebebbda9278f76b (patch)
tree36c2bef7ca18abc47f453cd2e518151be054886b /include/linux
parentcompiler.h: Remove data_race() and unnecessary checks from {READ,WRITE}_ONCE() (diff)
downloadwireguard-linux-95c094fccb85422eff3c12930ebebbda9278f76b.tar.xz
wireguard-linux-95c094fccb85422eff3c12930ebebbda9278f76b.zip
compiler.h: Avoid nested statement expression in data_race()
It appears that compilers have trouble with nested statement expressions. Therefore, remove one level of statement expression nesting from the data_race() macro. This will help avoiding potential problems in the future as its usage increases. Reported-by: Borislav Petkov <bp@suse.de> Reported-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Marco Elver <elver@google.com> Signed-off-by: Borislav Petkov <bp@suse.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Will Deacon <will@kernel.org> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Link: https://lkml.kernel.org/r/20200520221712.GA21166@zn.tnic Link: https://lkml.kernel.org/r/20200521142047.169334-10-elver@google.com
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/compiler.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 7b090d263fec..f0bfbe82f0fe 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -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; \
})
/*