Browse Source

Kernel: Mark sys$madvise 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
0e564240a6
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

@@ -121,7 +121,7 @@ enum class NeedsBigProcessLock {
     S(link, NeedsBigProcessLock::No)                       \
     S(listen, NeedsBigProcessLock::No)                     \
     S(lseek, NeedsBigProcessLock::No)                      \
-    S(madvise, NeedsBigProcessLock::Yes)                   \
+    S(madvise, NeedsBigProcessLock::No)                    \
     S(map_time_page, NeedsBigProcessLock::Yes)             \
     S(mkdir, NeedsBigProcessLock::No)                      \
     S(mknod, NeedsBigProcessLock::No)                      \

+ 1 - 1
Kernel/Syscalls/mmap.cpp

@@ -407,7 +407,7 @@ ErrorOr<FlatPtr> Process::sys$mprotect(Userspace<void*> addr, size_t size, int p
 
 ErrorOr<FlatPtr> Process::sys$madvise(Userspace<void*> address, size_t size, int advice)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     TRY(require_promise(Pledge::stdio));
 
     auto range_to_madvise = TRY(Memory::expand_range_to_page_boundaries(address.ptr(), size));