From 5c10fb4007748374640f1db27190946e45422921 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sun, 18 Jul 2021 11:33:35 -0700 Subject: [PATCH] Kernel: Disable big process lock for sys$gettid() This syscall reads a read only value from the current thread, and hence has no need for the big process lock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/thread.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index d9b292dde3..80b5506954 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -126,7 +126,7 @@ enum class NeedsBigProcessLock { S(getsockopt, NeedsBigProcessLock::Yes) \ S(setsockopt, NeedsBigProcessLock::Yes) \ S(create_thread, NeedsBigProcessLock::Yes) \ - S(gettid, NeedsBigProcessLock::Yes) \ + S(gettid, NeedsBigProcessLock::No) \ S(rename, NeedsBigProcessLock::Yes) \ S(ftruncate, NeedsBigProcessLock::Yes) \ S(exit_thread, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/thread.cpp b/Kernel/Syscalls/thread.cpp index 488d237ecf..2fae689d90 100644 --- a/Kernel/Syscalls/thread.cpp +++ b/Kernel/Syscalls/thread.cpp @@ -228,7 +228,7 @@ KResultOr Process::sys$get_thread_name(pid_t tid, Userspace buff KResultOr Process::sys$gettid() { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this) REQUIRE_PROMISE(stdio); return Thread::current()->tid().value(); }