From dc454b9a6ad8156ecc9ad81ad55eca886b4defce Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 30 Dec 2025 16:12:07 +0200 Subject: [PATCH] Kernel: Fix SA_RESETHAND handling order if SA_RESETHAND was set, alt stack would not get used --- kernel/kernel/Thread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/kernel/Thread.cpp b/kernel/kernel/Thread.cpp index a0dcaccd..da435630 100644 --- a/kernel/kernel/Thread.cpp +++ b/kernel/kernel/Thread.cpp @@ -636,12 +636,12 @@ namespace Kernel : reinterpret_cast(handler.sa_handler); has_sa_restart = !!(handler.sa_flags & SA_RESTART); - if (handler.sa_flags & SA_RESETHAND) - handler = { .sa_handler = SIG_DFL, .sa_mask = 0, .sa_flags = 0 }; - const auto& alt_stack = m_signal_alt_stack; if (alt_stack.ss_flags != SS_DISABLE && (handler.sa_flags & SA_ONSTACK) && !currently_on_alternate_stack()) signal_stack_top = reinterpret_cast(alt_stack.ss_sp) + alt_stack.ss_size; + + if (handler.sa_flags & SA_RESETHAND) + handler = { .sa_handler = SIG_DFL, .sa_mask = 0, .sa_flags = 0 }; } m_signal_pending_mask &= ~(1ull << signal);