Browse Source

Kernel: Mark sys$msync 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
3f89a1b131
2 changed files with 2 additions and 1 deletions
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 0
      Kernel/Syscalls/mmap.cpp

+ 1 - 1
Kernel/API/Syscall.h

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

+ 1 - 0
Kernel/Syscalls/mmap.cpp

@@ -606,6 +606,7 @@ ErrorOr<FlatPtr> Process::sys$annotate_mapping(Userspace<void*> address, int fla
 
 ErrorOr<FlatPtr> Process::sys$msync(Userspace<void*> address, size_t size, int flags)
 {
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     if ((flags & (MS_SYNC | MS_ASYNC | MS_INVALIDATE)) != flags)
         return EINVAL;