summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2023-04-04 14:10:50 +0300
committerIdan Horowitz <idan.horowitz@gmail.com>2023-04-06 20:30:03 +0300
commit36972141667508d44b0d4e0d2d3b092f4ad404c5 (patch)
tree3ccf8e743446d07a26249c465c0f0a02f2b6a8f4
parentdcdcab0099dce80697c127481a60c13e4515c04c (diff)
downloadserenity-36972141667508d44b0d4e0d2d3b092f4ad404c5.zip
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.
-rw-r--r--Kernel/API/Syscall.h2
-rw-r--r--Kernel/Syscalls/mmap.cpp2
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<void> Process::validate_inode_mmap_prot(int prot, bool readable_descript
ErrorOr<FlatPtr> Process::sys$mmap(Userspace<Syscall::SC_mmap_params const*> 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));