aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Chiu <andy.chiu@sifive.com>2023-08-22 16:49:03 +0000
committerPalmer Dabbelt <palmer@rivosinc.com>2023-10-12 05:38:40 -0700
commit14a270bfab7ab1c4b605c01eeca5557447ad5a2b (patch)
tree0675d3287c023bfe1afefbb1f68ec8740d21de27
parent5abb5c3cd4b38ec32c38a852c83ea04255cecf25 (diff)
downloadlinux-14a270bfab7ab1c4b605c01eeca5557447ad5a2b.tar.gz
riscv: signal: fix sigaltstack frame size checking
The alternative stack checking in get_sigframe introduced by the Vector support is not needed and has a problem. It is not needed as we have already validate it at the beginning of the function if we are already on an altstack. If not, the size of an altstack is always validated at its allocation stage with sigaltstack_size_valid(). Besides, we must only regard the size of an altstack if the handler of a signal is registered with SA_ONSTACK. So, blindly checking overflow of an altstack if sas_ss_size not equals to zero will check against wrong signal handlers if only a subset of signals are registered with SA_ONSTACK. Fixes: 8ee0b41898fa ("riscv: signal: Add sigcontext save/restore for vector") Reported-by: Prashanth Swaminathan <prashanthsw@google.com> Signed-off-by: Andy Chiu <andy.chiu@sifive.com> Link: https://lore.kernel.org/r/20230822164904.21660-1-andy.chiu@sifive.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
-rw-r--r--arch/riscv/kernel/signal.c7
1 files changed, 0 insertions, 7 deletions
diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c
index 180d951d362418..21a4d0e111bc5f 100644
--- a/arch/riscv/kernel/signal.c
+++ b/arch/riscv/kernel/signal.c
@@ -311,13 +311,6 @@ static inline void __user *get_sigframe(struct ksignal *ksig,
/* Align the stack frame. */
sp &= ~0xfUL;
- /*
- * Fail if the size of the altstack is not large enough for the
- * sigframe construction.
- */
- if (current->sas_ss_size && sp < current->sas_ss_sp)
- return (void __user __force *)-1UL;
-
return (void __user *)sp;
}