diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2008-10-17 12:20:26 -0400 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2008-10-17 12:20:26 -0400 |
commit | 651dab4264e4ba0e563f5ff56f748127246e9065 (patch) | |
tree | 016630974bdcb00fe529b673f96d389e0fd6dc94 /kernel/fork.c | |
parent | 40b8606253552109815786e5d4b0de98782d31f5 (diff) | |
parent | 2e532d68a2b3e2aa6b19731501222069735c741c (diff) |
Merge commit 'linus/master' into merge-linus
Conflicts:
arch/x86/kvm/i8254.c
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 4308d75f0fa5..37b3e150ae39 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -802,6 +802,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | |||
802 | 802 | ||
803 | sig->leader = 0; /* session leadership doesn't inherit */ | 803 | sig->leader = 0; /* session leadership doesn't inherit */ |
804 | sig->tty_old_pgrp = NULL; | 804 | sig->tty_old_pgrp = NULL; |
805 | sig->tty = NULL; | ||
805 | 806 | ||
806 | sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero; | 807 | sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero; |
807 | sig->gtime = cputime_zero; | 808 | sig->gtime = cputime_zero; |
@@ -838,6 +839,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | |||
838 | void __cleanup_signal(struct signal_struct *sig) | 839 | void __cleanup_signal(struct signal_struct *sig) |
839 | { | 840 | { |
840 | exit_thread_group_keys(sig); | 841 | exit_thread_group_keys(sig); |
842 | tty_kref_put(sig->tty); | ||
841 | kmem_cache_free(signal_cachep, sig); | 843 | kmem_cache_free(signal_cachep, sig); |
842 | } | 844 | } |
843 | 845 | ||
@@ -1229,7 +1231,8 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1229 | p->nsproxy->pid_ns->child_reaper = p; | 1231 | p->nsproxy->pid_ns->child_reaper = p; |
1230 | 1232 | ||
1231 | p->signal->leader_pid = pid; | 1233 | p->signal->leader_pid = pid; |
1232 | p->signal->tty = current->signal->tty; | 1234 | tty_kref_put(p->signal->tty); |
1235 | p->signal->tty = tty_kref_get(current->signal->tty); | ||
1233 | set_task_pgrp(p, task_pgrp_nr(current)); | 1236 | set_task_pgrp(p, task_pgrp_nr(current)); |
1234 | set_task_session(p, task_session_nr(current)); | 1237 | set_task_session(p, task_session_nr(current)); |
1235 | attach_pid(p, PIDTYPE_PGID, task_pgrp(current)); | 1238 | attach_pid(p, PIDTYPE_PGID, task_pgrp(current)); |