Linux on riscv does not support SA_RESTORER.
Currently QEMU thinks there is a field 'sa_restorer' in the middle of
'struct sigaction' which does not actually exist.
This leads to corrupted data and out-of-bounds accesses.

Signed-off-by: Thomas Weißschuh <tho...@t-8ch.de>
---
 linux-user/riscv/target_signal.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/linux-user/riscv/target_signal.h b/linux-user/riscv/target_signal.h
index 
6c0470f0bc82c6330ce50cb662f2039cf1fab288..258945770b674c0b6b66a94659d9c93fbabffdfb
 100644
--- a/linux-user/riscv/target_signal.h
+++ b/linux-user/riscv/target_signal.h
@@ -4,5 +4,6 @@
 #include "../generic/signal.h"
 
 #define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1
+#undef TARGET_SA_RESTORER
 
 #endif /* RISCV_TARGET_SIGNAL_H */

---
base-commit: 6fccaa2fba391815308a746d68f7fa197bc93586
change-id: 20250202-riscv-sa-restorer-edd3dfa7790f

Best regards,
-- 
Thomas Weißschuh <tho...@t-8ch.de>


Reply via email to