From 8fce807b1007788feb4be270680eb7bc111011fb Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 3 Feb 2023 16:22:16 +0200 Subject: [PATCH] Kernel: Fix usermode verification in ptrace with PT_SETREGS When doing PT_SETREGS, we want to verify that the debugged thread is executing in usermode. b2f7ccf refactored things and flipped the relevant check around, which broke things that use PT_SETREGS (for example, stepping over breakpoints with sdb). --- Kernel/Syscalls/ptrace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Syscalls/ptrace.cpp b/Kernel/Syscalls/ptrace.cpp index 3d513a7e4f..713cfcc019 100644 --- a/Kernel/Syscalls/ptrace.cpp +++ b/Kernel/Syscalls/ptrace.cpp @@ -107,7 +107,7 @@ static ErrorOr handle_ptrace(Kernel::Syscall::SC_ptrace_params const& p auto& peer_saved_registers = peer->get_register_dump_from_stack(); // Verify that the saved registers are in usermode context - if (peer_saved_registers.previous_mode() == ExecutionMode::User) + if (peer_saved_registers.previous_mode() != ExecutionMode::User) return EFAULT; tracer->set_regs(regs);