ソースを参照

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

All accesses to shared mutable data are already serialized behind the
process address space spinlock.
Idan Horowitz 2 年 前
コミット
2f79d0e8b9
2 ファイル変更2 行追加2 行削除
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/mmap.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -127,7 +127,7 @@ enum class NeedsBigProcessLock {
     S(mknod, NeedsBigProcessLock::No)                      \
     S(mmap, NeedsBigProcessLock::No)                       \
     S(mount, NeedsBigProcessLock::Yes)                     \
-    S(mprotect, NeedsBigProcessLock::Yes)                  \
+    S(mprotect, NeedsBigProcessLock::No)                   \
     S(mremap, NeedsBigProcessLock::Yes)                    \
     S(msync, NeedsBigProcessLock::Yes)                     \
     S(munmap, NeedsBigProcessLock::Yes)                    \

+ 1 - 1
Kernel/Syscalls/mmap.cpp

@@ -268,7 +268,7 @@ ErrorOr<FlatPtr> Process::sys$mmap(Userspace<Syscall::SC_mmap_params const*> use
 
 ErrorOr<FlatPtr> Process::sys$mprotect(Userspace<void*> addr, size_t size, int prot)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     TRY(require_promise(Pledge::stdio));
 
     if (prot & PROT_EXEC) {