Browse Source

Kernel: Mark sys$listen() as not needing the big lock

This syscall already performs the necessary locking and so doesn't
need to rely on the process big lock.
Andreas Kling 3 years ago
parent
commit
36d829b97c
2 changed files with 2 additions and 2 deletions
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/socket.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -110,7 +110,7 @@ enum class NeedsBigProcessLock {
     S(kill_thread, NeedsBigProcessLock::Yes)                \
     S(killpg, NeedsBigProcessLock::Yes)                     \
     S(link, NeedsBigProcessLock::Yes)                       \
-    S(listen, NeedsBigProcessLock::Yes)                     \
+    S(listen, NeedsBigProcessLock::No)                      \
     S(lseek, NeedsBigProcessLock::No)                       \
     S(madvise, NeedsBigProcessLock::Yes)                    \
     S(map_time_page, NeedsBigProcessLock::Yes)              \

+ 1 - 1
Kernel/Syscalls/socket.cpp

@@ -62,7 +62,7 @@ ErrorOr<FlatPtr> Process::sys$bind(int sockfd, Userspace<sockaddr const*> addres
 
 ErrorOr<FlatPtr> Process::sys$listen(int sockfd, int backlog)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this)
     if (backlog < 0)
         return EINVAL;
     auto description = TRY(open_file_description(sockfd));