]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
riscv: ptrace: cfi: expand "SS" references to "shadow stack" in uapi headers
authorPaul Walmsley <pjw@kernel.org>
Sun, 5 Apr 2026 00:40:58 +0000 (18:40 -0600)
committerPaul Walmsley <pjw@kernel.org>
Sun, 5 Apr 2026 00:40:58 +0000 (18:40 -0600)
Similar to the recent change to expand "LP" to "branch landing pad",
let's expand "SS" in the ptrace uapi macros to "shadow stack" as well.
This aligns with the existing prctl() arguments, which use the
expanded "shadow stack" names, rather than just the abbreviation.

Link: https://lore.kernel.org/linux-riscv/CAHk-=whhSLGZAx3N5jJpb4GLFDqH_QvS07D+6BnkPWmCEzTAgw@mail.gmail.com/
Cc: Deepak Gupta <debug@rivosinc.com>
Signed-off-by: Paul Walmsley <pjw@kernel.org>
arch/riscv/include/uapi/asm/ptrace.h
arch/riscv/kernel/ptrace.c
tools/testing/selftests/riscv/cfi/cfitests.c

index 9985bd58148ee2faa4c26eb0ed23bed06130b956..3de2b7124aff3e03c9ba7370a76e75fabde4131c 100644 (file)
@@ -135,25 +135,25 @@ struct __sc_riscv_cfi_state {
 #define PTRACE_CFI_BRANCH_LANDING_PAD_EN_BIT           0
 #define PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_BIT         1
 #define PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_BIT     2
-#define PTRACE_CFI_SS_EN_BIT   3
-#define PTRACE_CFI_SS_LOCK_BIT 4
-#define PTRACE_CFI_SS_PTR_BIT  5
+#define PTRACE_CFI_SHADOW_STACK_EN_BIT                 3
+#define PTRACE_CFI_SHADOW_STACK_LOCK_BIT               4
+#define PTRACE_CFI_SHADOW_STACK_PTR_BIT                        5
 
 #define PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE         _BITUL(PTRACE_CFI_BRANCH_LANDING_PAD_EN_BIT)
 #define PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_STATE       \
        _BITUL(PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_BIT)
 #define PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_STATE   \
        _BITUL(PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_BIT)
-#define PTRACE_CFI_SS_EN_STATE         _BITUL(PTRACE_CFI_SS_EN_BIT)
-#define PTRACE_CFI_SS_LOCK_STATE       _BITUL(PTRACE_CFI_SS_LOCK_BIT)
-#define PTRACE_CFI_SS_PTR_STATE                _BITUL(PTRACE_CFI_SS_PTR_BIT)
+#define PTRACE_CFI_SHADOW_STACK_EN_STATE               _BITUL(PTRACE_CFI_SHADOW_STACK_EN_BIT)
+#define PTRACE_CFI_SHADOW_STACK_LOCK_STATE             _BITUL(PTRACE_CFI_SHADOW_STACK_LOCK_BIT)
+#define PTRACE_CFI_SHADOW_STACK_PTR_STATE              _BITUL(PTRACE_CFI_SHADOW_STACK_PTR_BIT)
 
 #define PTRACE_CFI_STATE_INVALID_MASK  ~(PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE | \
                                          PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_STATE | \
                                          PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_STATE | \
-                                         PTRACE_CFI_SS_EN_STATE | \
-                                         PTRACE_CFI_SS_LOCK_STATE | \
-                                         PTRACE_CFI_SS_PTR_STATE)
+                                         PTRACE_CFI_SHADOW_STACK_EN_STATE | \
+                                         PTRACE_CFI_SHADOW_STACK_LOCK_STATE | \
+                                         PTRACE_CFI_SHADOW_STACK_PTR_STATE)
 
 struct __cfi_status {
        __u64 cfi_state;
index b6156625d6f80f4b6e51f7de9e16e7da99eecf6f..93de2e7a30747d93d2ebc51f5d2c59c16cdd9718 100644 (file)
@@ -311,10 +311,10 @@ static int riscv_cfi_get(struct task_struct *target,
        }
 
        if (is_shstk_enabled(target)) {
-               user_cfi.cfi_status.cfi_state |= (PTRACE_CFI_SS_EN_STATE |
-                                                 PTRACE_CFI_SS_PTR_STATE);
+               user_cfi.cfi_status.cfi_state |= (PTRACE_CFI_SHADOW_STACK_EN_STATE |
+                                                 PTRACE_CFI_SHADOW_STACK_PTR_STATE);
                user_cfi.cfi_status.cfi_state |= is_shstk_locked(target) ?
-                                                PTRACE_CFI_SS_LOCK_STATE : 0;
+                                                PTRACE_CFI_SHADOW_STACK_LOCK_STATE : 0;
                user_cfi.shstk_ptr = get_active_shstk(target);
        }
 
@@ -350,7 +350,7 @@ static int riscv_cfi_set(struct task_struct *target,
         */
        if ((user_cfi.cfi_status.cfi_state &
             (PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE | PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_STATE |
-             PTRACE_CFI_SS_EN_STATE | PTRACE_CFI_SS_LOCK_STATE)) ||
+             PTRACE_CFI_SHADOW_STACK_EN_STATE | PTRACE_CFI_SHADOW_STACK_LOCK_STATE)) ||
             (user_cfi.cfi_status.cfi_state & PTRACE_CFI_STATE_INVALID_MASK))
                return -EINVAL;
 
@@ -365,7 +365,7 @@ static int riscv_cfi_set(struct task_struct *target,
 
        /* If shadow stack enabled on target, set new shadow stack pointer */
        if (is_shstk_enabled(target) &&
-           (user_cfi.cfi_status.cfi_state & PTRACE_CFI_SS_PTR_STATE))
+           (user_cfi.cfi_status.cfi_state & PTRACE_CFI_SHADOW_STACK_PTR_STATE))
                set_active_shstk(target, user_cfi.shstk_ptr);
 
        return 0;
index 68374a27ec81b0684a0c0fb9284803da91fa098c..0dac74b8553cdbc29ed39766376e7cea04c42d7a 100644 (file)
@@ -95,8 +95,8 @@ bool cfi_ptrace_test(void)
 
                switch (ptrace_test_num) {
 #define CFI_ENABLE_MASK (PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE |      \
-                        PTRACE_CFI_SS_EN_STATE |       \
-                        PTRACE_CFI_SS_PTR_STATE)
+                        PTRACE_CFI_SHADOW_STACK_EN_STATE |             \
+                        PTRACE_CFI_SHADOW_STACK_PTR_STATE)
                case 0:
                        if ((cfi_reg.cfi_status.cfi_state & CFI_ENABLE_MASK) != CFI_ENABLE_MASK)
                                ksft_exit_fail_msg("%s: ptrace_getregset failed, %llu\n", __func__,