mirror of
https://github.com/armbian/build.git
synced 2025-09-17 03:31:39 +02:00
46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Andy Chiu <andy.chiu@sifive.com>
|
|
Date: Thu, 6 Jun 2024 03:25:25 -0400
|
|
Subject: 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: 8ee0b41 ("riscv: signal: Add sigcontext save/restore for vector")
|
|
Reported-by: Prashanth Swaminathan <prashanthsw@google.com>
|
|
Signed-off-by: Andy Chiu <andy.chiu@sifive.com>
|
|
---
|
|
arch/riscv/kernel/signal.c | 7 -------
|
|
1 file changed, 7 deletions(-)
|
|
|
|
diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c
|
|
index 111111111111..222222222222 100644
|
|
--- a/arch/riscv/kernel/signal.c
|
|
+++ b/arch/riscv/kernel/signal.c
|
|
@@ -309,13 +309,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;
|
|
}
|
|
|
|
--
|
|
Armbian
|
|
|