From 36972141667508d44b0d4e0d2d3b092f4ad404c5 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Tue, 4 Apr 2023 14:10:50 +0300 Subject: [PATCH] Kernel: Mark sys$mmap as not needing the big lock All accesses to shared mutable data are already serialized behind the process address space spinlock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/mmap.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index a7f134eec9..2a90d2900d 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -125,7 +125,7 @@ enum class NeedsBigProcessLock { S(map_time_page, NeedsBigProcessLock::No) \ S(mkdir, NeedsBigProcessLock::No) \ S(mknod, NeedsBigProcessLock::No) \ - S(mmap, NeedsBigProcessLock::Yes) \ + S(mmap, NeedsBigProcessLock::No) \ S(mount, NeedsBigProcessLock::Yes) \ S(mprotect, NeedsBigProcessLock::Yes) \ S(mremap, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp index 8006b7f9d0..f55cbc5ecc 100644 --- a/Kernel/Syscalls/mmap.cpp +++ b/Kernel/Syscalls/mmap.cpp @@ -125,7 +125,7 @@ ErrorOr Process::validate_inode_mmap_prot(int prot, bool readable_descript ErrorOr Process::sys$mmap(Userspace user_params) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); auto params = TRY(copy_typed_from_user(user_params));