summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2023-04-03 16:17:21 +0200
committerAndreas Kling <kling@serenityos.org>2023-04-04 10:33:42 +0200
commit374f4aeab9600de3e41aa7957da420e24bf92b6d (patch)
treefa2f4b036284294175a4944d2f2da953a967795c /Kernel
parenta7212a748846630190ca54080e11e1db73b3a11a (diff)
downloadserenity-374f4aeab9600de3e41aa7957da420e24bf92b6d.zip
Kernel: Mark sys$sigreturn as not needing the big lock
This syscall is only concerned with the current thread (except in the case of a pledge violation, when it will add some details about that to the process coredump metadata. That stuff is already serialized.)
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/API/Syscall.h2
-rw-r--r--Kernel/Syscalls/sigaction.cpp4
2 files changed, 3 insertions, 3 deletions
diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h
index f35368208a..a0450b7c5c 100644
--- a/Kernel/API/Syscall.h
+++ b/Kernel/API/Syscall.h
@@ -178,7 +178,7 @@ enum class NeedsBigProcessLock {
S(sigaltstack, NeedsBigProcessLock::Yes) \
S(sigpending, NeedsBigProcessLock::Yes) \
S(sigprocmask, NeedsBigProcessLock::Yes) \
- S(sigreturn, NeedsBigProcessLock::Yes) \
+ S(sigreturn, NeedsBigProcessLock::No) \
S(sigsuspend, NeedsBigProcessLock::Yes) \
S(sigtimedwait, NeedsBigProcessLock::Yes) \
S(socket, NeedsBigProcessLock::No) \
diff --git a/Kernel/Syscalls/sigaction.cpp b/Kernel/Syscalls/sigaction.cpp
index 81db82102a..dfa3031d90 100644
--- a/Kernel/Syscalls/sigaction.cpp
+++ b/Kernel/Syscalls/sigaction.cpp
@@ -75,9 +75,9 @@ ErrorOr<FlatPtr> Process::sys$sigaction(int signum, Userspace<sigaction const*>
return 0;
}
-ErrorOr<FlatPtr> Process::sys$sigreturn([[maybe_unused]] RegisterState& registers)
+ErrorOr<FlatPtr> Process::sys$sigreturn(RegisterState& registers)
{
- VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+ VERIFY_NO_PROCESS_BIG_LOCK(this);
TRY(require_promise(Pledge::stdio));
SmapDisabler disabler;