From 8ff0afd829a54f067ce63cf6e443aae95124ac6b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 9 Jan 2021 15:42:03 +0100 Subject: [PATCH] Kernel: Defer switching the paging scope in ptrace(PT_POKE) a little If we can fail with EFAULT early, might as well avoid switching the paging scope. --- Kernel/Syscalls/ptrace.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Kernel/Syscalls/ptrace.cpp b/Kernel/Syscalls/ptrace.cpp index ccc585a511..81ea5e6cf0 100644 --- a/Kernel/Syscalls/ptrace.cpp +++ b/Kernel/Syscalls/ptrace.cpp @@ -72,11 +72,11 @@ KResultOr Process::peek_user_data(Userspace address) KResult Process::poke_user_data(Userspace address, u32 data) { - ProcessPagingScope scope(*this); Range range = { VirtualAddress(address), sizeof(u32) }; auto* region = find_region_containing(range); if (!region) return KResult(-EFAULT); + ProcessPagingScope scope(*this); if (region->is_shared()) { // If the region is shared, we change its vmobject to a PrivateInodeVMObject // to prevent the write operation from changing any shared inode data @@ -97,11 +97,11 @@ KResult Process::poke_user_data(Userspace address, u32 data) }); if (!copy_to_user(address, &data)) { - dbg() << "Invalid address for poke_user_data: " << address.ptr(); + dbgln("poke_user_data: Bad address {:p}", address.ptr()); return KResult(-EFAULT); } - return KResult(KSuccess); + return KSuccess; } }