Commit 95c094fc authored by Marco Elver's avatar Marco Elver Committed by Thomas Gleixner

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: default avatarBorislav Petkov <bp@suse.de>
Reported-by: default avatarNathan Chancellor <natechancellor@gmail.com>
Signed-off-by: default avatarMarco Elver <elver@google.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: default avatarWill Deacon <will@kernel.org>
Tested-by: default avatarNick 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

parent 44b97dcc
...@@ -264,12 +264,12 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, ...@@ -264,12 +264,12 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
*/ */
#define data_race(expr) \ #define data_race(expr) \
({ \ ({ \
__unqual_scalar_typeof(({ expr; })) __v = ({ \
__kcsan_disable_current(); \ __kcsan_disable_current(); \
({ \ expr; \
__unqual_scalar_typeof(({ expr; })) __v = ({ expr; }); \ }); \
__kcsan_enable_current(); \ __kcsan_enable_current(); \
__v; \ __v; \
}); \
}) })
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment