mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 06:41:39 -04:00
riscv: ptrace: cfi: expand "SS" references to "shadow stack" in uapi headers
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>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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__,
|
||||
|
||||
Reference in New Issue
Block a user