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.
This commit is contained in:
Andreas Kling 2022-04-03 22:06:03 +02:00
commit bc4282c773
Notes: sideshowbarker 2024-07-17 14:31:22 +09:00
2 changed files with 4 additions and 4 deletions

View file

@ -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) \

View file

@ -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())