diff options
author | Jisheng Zhang <jszhang@kernel.org> | 2022-10-30 20:45:17 +0800 |
---|---|---|
committer | Palmer Dabbelt <palmer@rivosinc.com> | 2022-11-29 18:16:55 -0800 |
commit | 7e1864332fbc1b993659eab7974da9fe8bf8c128 (patch) | |
tree | 3c6cd7287a3463cb214208ffceb5b4f0210360b0 /tools/testing/selftests/net/udpgro_bench.sh | |
parent | 31da94c25aea835ceac00575a9fd206c5a833fed (diff) | |
download | linux-7e1864332fbc1b993659eab7974da9fe8bf8c128.tar.gz |
riscv: fix race when vmap stack overflow
Currently, when detecting vmap stack overflow, riscv firstly switches
to the so called shadow stack, then use this shadow stack to call the
get_overflow_stack() to get the overflow stack. However, there's
a race here if two or more harts use the same shadow stack at the same
time.
To solve this race, we introduce spin_shadow_stack atomic var, which
will be swap between its own address and 0 in atomic way, when the
var is set, it means the shadow_stack is being used; when the var
is cleared, it means the shadow_stack isn't being used.
Fixes: 31da94c25aea ("riscv: add VMAP_STACK overflow detection")
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Suggested-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Guo Ren <guoren@kernel.org>
Link: https://lore.kernel.org/r/20221030124517.2370-1-jszhang@kernel.org
[Palmer: Add AQ to the swap, and also some comments.]
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'tools/testing/selftests/net/udpgro_bench.sh')
0 files changed, 0 insertions, 0 deletions