Fix tfork(2) not copying signal properties.

This commit is contained in:
Jonas 'Sortie' Termansen 2014-09-15 21:05:14 +02:00
parent 741e48e688
commit 6558de636e
1 changed files with 14 additions and 8 deletions

View File

@ -670,6 +670,20 @@ Process* Process::Fork()
clone->cwd = cwd;
kthread_mutex_unlock(&ptrlock);
kthread_mutex_lock(&idlock);
clone->uid = uid;
clone->gid = gid;
clone->euid = euid;
clone->egid = egid;
clone->umask = umask;
kthread_mutex_unlock(&idlock);
kthread_mutex_lock(&signal_lock);
memcpy(&clone->signal_actions, &signal_actions, sizeof(signal_actions));
sigemptyset(&clone->signal_pending);
clone->sigreturn = sigreturn;
kthread_mutex_unlock(&signal_lock);
// Initialize things that can fail and abort if needed.
bool failure = false;
@ -681,14 +695,6 @@ Process* Process::Fork()
clone->mtable = mtable;
kthread_mutex_unlock(&ptrlock);
kthread_mutex_lock(&idlock);
clone->uid = uid;
clone->gid = gid;
clone->euid = euid;
clone->egid = egid;
clone->umask = umask;
kthread_mutex_unlock(&idlock);
if ( !(clone->program_image_path = String::Clone(program_image_path)) )
failure = false;