Browse Source

Kernel: Mark sys$munmap as not needing the big lock

All accesses to shared mutable data are already serialized behind the
process address space spinlock.
Idan Horowitz 2 years ago
parent
commit
db10f201c8
2 changed files with 2 additions and 2 deletions
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/mmap.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -130,7 +130,7 @@ enum class NeedsBigProcessLock {
     S(mprotect, NeedsBigProcessLock::No)                   \
     S(mremap, NeedsBigProcessLock::Yes)                    \
     S(msync, NeedsBigProcessLock::Yes)                     \
-    S(munmap, NeedsBigProcessLock::Yes)                    \
+    S(munmap, NeedsBigProcessLock::No)                     \
     S(open, NeedsBigProcessLock::No)                       \
     S(perf_event, NeedsBigProcessLock::Yes)                \
     S(perf_register_string, NeedsBigProcessLock::Yes)      \

+ 1 - 1
Kernel/Syscalls/mmap.cpp

@@ -470,7 +470,7 @@ ErrorOr<FlatPtr> Process::sys$set_mmap_name(Userspace<Syscall::SC_set_mmap_name_
 
 ErrorOr<FlatPtr> Process::sys$munmap(Userspace<void*> addr, size_t size)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     TRY(require_promise(Pledge::stdio));
     TRY(address_space().with([&](auto& space) {
         return space->unmap_mmap_range(addr.vaddr(), size);