[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 17/24] linux-user/syscall: introduce prctl for shadow stack en
From: |
Deepak Gupta |
Subject: |
[PATCH v2 17/24] linux-user/syscall: introduce prctl for shadow stack enable/disable |
Date: |
Mon, 29 Jul 2024 10:53:19 -0700 |
Each application enables shadow stack for itself via prctl. Using prctl
codes as proposed in riscv cfi patches on kernel mailing list [1]
[1] - https://lore.kernel.org/all/20240403234054.2020347-1-debug@rivosinc.com/
Signed-off-by: Deepak Gupta <debug@rivosinc.com>
Co-developed-by: Jim Shu <jim.shu@sifive.com>
Co-developed-by: Andy Chiu <andy.chiu@sifive.com>
Co-developed-by: Jesse Huang <jesse.huang@sifive.com>
---
linux-user/syscall.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ec157c1088..f879be7cfe 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6295,6 +6295,18 @@ abi_long do_arch_prctl(CPUX86State *env, int code,
abi_ulong addr)
# define PR_SME_VL_INHERIT (1 << 17)
#endif
+#ifndef PR_GET_SHADOW_STACK_STATUS
+# define PR_GET_SHADOW_STACK_STATUS 71
+#endif
+#ifndef PR_SET_SHADOW_STACK_STATUS
+# define PR_SET_SHADOW_STACK_STATUS 72
+# define PR_SHADOW_STACK_ENABLE (1UL << 0)
+# define PR_SHADOW_STACK_WRITE (1UL << 1)
+# define PR_SHADOW_STACK_PUSH (1UL << 2)
+#endif
+#ifndef PR_LOCK_SHADOW_STACK_STATUS
+# define PR_LOCK_SHADOW_STACK_STATUS 73
+#endif
#ifndef PR_GET_INDIR_BR_LP_STATUS
# define PR_GET_INDIR_BR_LP_STATUS 74
#endif
@@ -6488,6 +6500,9 @@ static abi_long do_prctl(CPUArchState *env, abi_long
option, abi_long arg2,
case PR_SET_TSC:
/* Disable to prevent the target disabling stuff we need. */
return -TARGET_EINVAL;
+ case PR_GET_SHADOW_STACK_STATUS:
+ case PR_SET_SHADOW_STACK_STATUS:
+ case PR_LOCK_SHADOW_STACK_STATUS:
case PR_GET_INDIR_BR_LP_STATUS:
case PR_SET_INDIR_BR_LP_STATUS:
case PR_LOCK_INDIR_BR_LP_STATUS:
--
2.44.0
- [PATCH v2 06/24] target/riscv: zicfilp `lpad` impl and branch tracking, (continued)
- [PATCH v2 06/24] target/riscv: zicfilp `lpad` impl and branch tracking, Deepak Gupta, 2024/07/29
- [PATCH v2 07/24] disas/riscv: enabled `lpad` disassembly, Deepak Gupta, 2024/07/29
- [PATCH v2 08/24] linux-user/syscall: introduce prctl for indirect branch tracking, Deepak Gupta, 2024/07/29
- [PATCH v2 09/24] linux-user/riscv: implement indirect branch tracking prctls, Deepak Gupta, 2024/07/29
- [PATCH v2 10/24] target/riscv: Add zicfiss extension, Deepak Gupta, 2024/07/29
- [PATCH v2 11/24] target/riscv: introduce ssp and enabling controls for zicfiss, Deepak Gupta, 2024/07/29
- [PATCH v2 12/24] target/riscv: tb flag for shadow stack instructions, Deepak Gupta, 2024/07/29
- [PATCH v2 14/24] target/riscv: compressed encodings for sspush and sspopchk, Deepak Gupta, 2024/07/29
- [PATCH v2 15/24] target/riscv: mmu changes for zicfiss shadow stack protection, Deepak Gupta, 2024/07/29
- [PATCH v2 13/24] target/riscv: implement zicfiss instructions, Deepak Gupta, 2024/07/29
- [PATCH v2 17/24] linux-user/syscall: introduce prctl for shadow stack enable/disable,
Deepak Gupta <=
- [PATCH v2 16/24] target/riscv: shadow stack mmu index for shadow stack instructions, Deepak Gupta, 2024/07/29
- [PATCH v2 18/24] linux-user/riscv: setup/teardown zicfiss shadow stack for qemu-user, Deepak Gupta, 2024/07/29
- [PATCH v2 21/24] target/riscv: add trace-hooks for each case of sw-check exception, Deepak Gupta, 2024/07/29
- [PATCH v2 19/24] disas/riscv: enable disassembly for zicfiss instructions, Deepak Gupta, 2024/07/29
- [PATCH v2 22/24] linux-user: permit RISC-V CFI dynamic entry in VDSO, Deepak Gupta, 2024/07/29
- [PATCH v2 20/24] disas/riscv: enable disassembly for compressed sspush/sspopchk, Deepak Gupta, 2024/07/29
- [PATCH v2 23/24] linux-user: Add RISC-V zicfilp support in VDSO, Deepak Gupta, 2024/07/29
- [PATCH v2 24/24] linux-user/riscv: Adding zicfiss/lp extension in hwprobe syscall, Deepak Gupta, 2024/07/29