浏览代码

Kernel: Mark sys$sendfd() and sys$recvfd() as not needing the big lock

These syscalls already perform the necessary locking and don't rely on
the process big lock.
Andreas Kling 3 年之前
父节点
当前提交
bc4282c773
共有 2 个文件被更改,包括 4 次插入4 次删除
  1. 2 2
      Kernel/API/Syscall.h
  2. 2 2
      Kernel/Syscalls/sendfd.cpp

+ 2 - 2
Kernel/API/Syscall.h

@@ -140,13 +140,13 @@ enum class NeedsBigProcessLock {
     S(readlink, NeedsBigProcessLock::No)                    \
     S(readlink, NeedsBigProcessLock::No)                    \
     S(readv, NeedsBigProcessLock::Yes)                      \
     S(readv, NeedsBigProcessLock::Yes)                      \
     S(realpath, NeedsBigProcessLock::No)                    \
     S(realpath, NeedsBigProcessLock::No)                    \
-    S(recvfd, NeedsBigProcessLock::Yes)                     \
+    S(recvfd, NeedsBigProcessLock::No)                      \
     S(recvmsg, NeedsBigProcessLock::Yes)                    \
     S(recvmsg, NeedsBigProcessLock::Yes)                    \
     S(rename, NeedsBigProcessLock::Yes)                     \
     S(rename, NeedsBigProcessLock::Yes)                     \
     S(rmdir, NeedsBigProcessLock::Yes)                      \
     S(rmdir, NeedsBigProcessLock::Yes)                      \
     S(sched_getparam, NeedsBigProcessLock::Yes)             \
     S(sched_getparam, NeedsBigProcessLock::Yes)             \
     S(sched_setparam, NeedsBigProcessLock::Yes)             \
     S(sched_setparam, NeedsBigProcessLock::Yes)             \
-    S(sendfd, NeedsBigProcessLock::Yes)                     \
+    S(sendfd, NeedsBigProcessLock::No)                      \
     S(sendmsg, NeedsBigProcessLock::Yes)                    \
     S(sendmsg, NeedsBigProcessLock::Yes)                    \
     S(set_coredump_metadata, NeedsBigProcessLock::Yes)      \
     S(set_coredump_metadata, NeedsBigProcessLock::Yes)      \
     S(set_mmap_name, NeedsBigProcessLock::Yes)              \
     S(set_mmap_name, NeedsBigProcessLock::Yes)              \

+ 2 - 2
Kernel/Syscalls/sendfd.cpp

@@ -12,7 +12,7 @@ namespace Kernel {
 
 
 ErrorOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
 ErrorOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
 {
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this)
     TRY(require_promise(Pledge::sendfd));
     TRY(require_promise(Pledge::sendfd));
     auto socket_description = TRY(open_file_description(sockfd));
     auto socket_description = TRY(open_file_description(sockfd));
     if (!socket_description->is_socket())
     if (!socket_description->is_socket())
@@ -31,7 +31,7 @@ ErrorOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
 
 
 ErrorOr<FlatPtr> Process::sys$recvfd(int sockfd, int options)
 ErrorOr<FlatPtr> Process::sys$recvfd(int sockfd, int options)
 {
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this)
     TRY(require_promise(Pledge::recvfd));
     TRY(require_promise(Pledge::recvfd));
     auto socket_description = TRY(open_file_description(sockfd));
     auto socket_description = TRY(open_file_description(sockfd));
     if (!socket_description->is_socket())
     if (!socket_description->is_socket())