From 9194741bd899bf7f203f1654733b4e9eb764ff69 Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 17 Jun 2026 23:16:23 -0300 Subject: [PATCH] signal: fix signal_suspend and restoring signal mask --- kernel-src/sys/signal.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel-src/sys/signal.c b/kernel-src/sys/signal.c index 398e1cfc..725e2314 100644 --- a/kernel-src/sys/signal.c +++ b/kernel-src/sys/signal.c @@ -148,8 +148,9 @@ void signal_suspend(sigset_t *sigset) { thread_t *thread = current_thread(); THREAD_ENTER(thread); + sigset_t oldmask = thread->signals.mask; memcpy(&thread->signals.mask, sigset, sizeof(sigset_t)); - signal_returnmask(thread, sigset); + signal_returnmask(thread, &oldmask); THREAD_LEAVE(thread); @@ -586,7 +587,7 @@ bool signal_check(struct thread_t *thread, context_t *context, bool syscall, uin if ((action->flags & SA_NODEFER) == 0) SIGNAL_SETON(&thread->signals.mask, signal); - for (int i = 1; i < signal; ++i) { + for (int i = 1; i < NSIG; ++i) { if (SIGNAL_GET(&action->mask, i) == 0) continue;