1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-29 20:45:08 +00:00

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.
This commit is contained in:
Idan Horowitz 2021-12-11 17:24:24 +02:00
parent 92a6c91f4e
commit 0ca1231d8f

View file

@ -46,6 +46,10 @@ ErrorOr<FlatPtr> 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 :^)