From 0ca1231d8fafb5d62b17a8e365b44cb1ceeb3498 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sat, 11 Dec 2021 17:24:24 +0200 Subject: [PATCH] Kernel: Inherit alternative signal stack on fork(2) A child process created via fork(2) inherits a copy of its parent's alternate signal stack settings. --- Kernel/Syscalls/fork.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Kernel/Syscalls/fork.cpp b/Kernel/Syscalls/fork.cpp index 76ba821680..b4cdbea24e 100644 --- a/Kernel/Syscalls/fork.cpp +++ b/Kernel/Syscalls/fork.cpp @@ -46,6 +46,10 @@ ErrorOr Process::sys$fork(RegisterState& regs) // A child created via fork(2) inherits a copy of its parent's signal mask child_first_thread->update_signal_mask(Thread::current()->signal_mask()); + // A child process created via fork(2) inherits a copy of its parent's alternate signal stack settings. + child_first_thread->m_alternative_signal_stack = Thread::current()->m_alternative_signal_stack; + child_first_thread->m_alternative_signal_stack_size = Thread::current()->m_alternative_signal_stack_size; + #if ARCH(I386) auto& child_regs = child_first_thread->m_regs; child_regs.eax = 0; // fork() returns 0 in the child :^)