Explorar el Código

Kernel: Make sys$msyscall() not take the big lock

This function is already serialized by the address space lock.
Andreas Kling hace 2 años
padre
commit
9c46fb7337
Se han modificado 2 ficheros con 2 adiciones y 2 borrados
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/mmap.cpp

+ 1 - 1
Kernel/API/Syscall.h

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

+ 1 - 1
Kernel/Syscalls/mmap.cpp

@@ -563,7 +563,7 @@ ErrorOr<FlatPtr> Process::sys$allocate_tls(Userspace<char const*> initial_data,
 
 ErrorOr<FlatPtr> Process::sys$msyscall(Userspace<void*> address)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
 
     return address_space().with([&](auto& space) -> ErrorOr<FlatPtr> {
         if (space->enforces_syscall_regions())