aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
authorFrank Mayhar <fmayhar@google.com>2008-09-12 12:54:39 -0400
committerIngo Molnar <mingo@elte.hu>2008-09-23 07:38:44 -0400
commitbb34d92f643086d546b49cef680f6f305ed84414 (patch)
tree275887040c96971e133fa20d99517c1fcea76415 /kernel/fork.c
parent5ce73a4a5a4893a1aa4cdeed1b1a5a6de42c43b6 (diff)
timers: fix itimer/many thread hang, v2
This is the second resubmission of the posix timer rework patch, posted a few days ago. This includes the changes from the previous resubmittion, which addressed Oleg Nesterov's comments, removing the RCU stuff from the patch and un-inlining the thread_group_cputime() function for SMP. In addition, per Ingo Molnar it simplifies the UP code, consolidating much of it with the SMP version and depending on lower-level SMP/UP handling to take care of the differences. It also cleans up some UP compile errors, moves the scheduler stats-related macros into kernel/sched_stats.h, cleans up a merge error in kernel/fork.c and has a few other minor fixes and cleanups as suggested by Oleg and Ingo. Thanks for the review, guys. Signed-off-by: Frank Mayhar <fmayhar@google.com> Cc: Roland McGrath <roland@redhat.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r--kernel/fork.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 1181b9aac48e..021ae012cc75 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -791,7 +791,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
791 int ret; 791 int ret;
792 792
793 if (clone_flags & CLONE_THREAD) { 793 if (clone_flags & CLONE_THREAD) {
794 ret = thread_group_cputime_clone_thread(current, tsk); 794 ret = thread_group_cputime_clone_thread(current);
795 if (likely(!ret)) { 795 if (likely(!ret)) {
796 atomic_inc(&current->signal->count); 796 atomic_inc(&current->signal->count);
797 atomic_inc(&current->signal->live); 797 atomic_inc(&current->signal->live);
@@ -834,9 +834,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
834 sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0; 834 sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;
835 sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0; 835 sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0;
836 task_io_accounting_init(&sig->ioac); 836 task_io_accounting_init(&sig->ioac);
837 INIT_LIST_HEAD(&sig->cpu_timers[0]);
838 INIT_LIST_HEAD(&sig->cpu_timers[1]);
839 INIT_LIST_HEAD(&sig->cpu_timers[2]);
840 taskstats_tgid_init(sig); 837 taskstats_tgid_init(sig);
841 838
842 task_lock(current->group_leader); 839 task_lock(current->group_leader);