1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-24 01:15:07 +00:00

Kernel: Preserve pending signals across execve(2)s

As required by posix. Also rename Thread::clear_signals to
Thread::reset_signals_for_exec since it doesn't actually clear any
pending signals, but rather does execve related signal book-keeping.
This commit is contained in:
Idan Horowitz 2021-12-11 17:40:50 +02:00
parent 31fa3f8b1b
commit 81a76a30a1
3 changed files with 4 additions and 4 deletions

View file

@ -678,11 +678,11 @@ u32 Thread::signal_mask_block(sigset_t signal_set, bool block)
return previous_signal_mask;
}
void Thread::clear_signals()
void Thread::reset_signals_for_exec()
{
SpinlockLocker lock(g_scheduler_lock);
// The signal mask is preserved across execve(2).
m_pending_signals = 0;
// The pending signal set is preserved across an execve(2).
m_have_any_unmasked_pending_signals.store(false, AK::memory_order_release);
m_signal_action_data.fill({});
// A successful call to execve(2) removes any existing alternate signal stack