瀏覽代碼

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.
Idan Horowitz 3 年之前
父節點
當前提交
0ca1231d8f
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      Kernel/Syscalls/fork.cpp

+ 4 - 0
Kernel/Syscalls/fork.cpp

@@ -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 :^)