diff options
author | Palmer Dabbelt <palmer@sifive.com> | 2018-08-03 22:27:19 +0300 |
---|---|---|
committer | Palmer Dabbelt <palmer@sifive.com> | 2018-08-20 20:55:24 +0300 |
commit | e45c7aca4914efc8bcdd8fc231efadcdc87ae2e5 (patch) | |
tree | 85dbb9cb9528ce2f392d44db75b8acde5c43cfd2 /arch/riscv/include/asm/unistd.h | |
parent | 7847e7052fc37fff9761347411f2838849e2146d (diff) | |
download | linux-e45c7aca4914efc8bcdd8fc231efadcdc87ae2e5.tar.xz |
RISC-V: Don't use a global include guard for uapi/asm/syscalls.h
This file is expected to be included multiple times in the same file in
order to allow the __SYSCALL macro to generate system call tables. With
a global include guard we end up missing __NR_riscv_flush_icache in the
syscall table, which results in icache flushes that escape the vDSO call
to not actually do anything.
The fix is to move to per-#define include guards, which allows the
system call tables to actually be populated. Thanks to Macrus Comstedt
for finding and fixing the bug!
Cc: Marcus Comstedt <marcus@mc.pp.se>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
Diffstat (limited to 'arch/riscv/include/asm/unistd.h')
-rw-r--r-- | arch/riscv/include/asm/unistd.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/riscv/include/asm/unistd.h b/arch/riscv/include/asm/unistd.h index 080fb28061de..0caea01d5cca 100644 --- a/arch/riscv/include/asm/unistd.h +++ b/arch/riscv/include/asm/unistd.h @@ -11,6 +11,11 @@ * GNU General Public License for more details. */ +/* + * There is explicitly no include guard here because this file is expected to + * be included multiple times. See uapi/asm/syscalls.h for more info. + */ + #define __ARCH_WANT_SYS_CLONE #include <uapi/asm/unistd.h> #include <uapi/asm/syscalls.h> |