diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-01-07 08:14:15 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-01-07 08:14:15 -0500 |
commit | 1c2a48cf65580a276552151eb8f78d78c55b828e (patch) | |
tree | 68ed0628a276b33cb5aa0ad4899c1afe0a33a69d /kernel/fork.c | |
parent | 0aa002fe602939370e9476e5ec32b562000a0425 (diff) | |
parent | cb600d2f83c854ec3d6660063e4466431999489b (diff) |
Merge branch 'linus' into x86/apic-cleanups
Conflicts:
arch/x86/include/asm/io_apic.h
Merge reason: Resolve the conflict, update to a more recent -rc base
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 3b159c5991b7..7d164e25b0f0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -174,8 +174,10 @@ static inline void free_signal_struct(struct signal_struct *sig) | |||
174 | 174 | ||
175 | static inline void put_signal_struct(struct signal_struct *sig) | 175 | static inline void put_signal_struct(struct signal_struct *sig) |
176 | { | 176 | { |
177 | if (atomic_dec_and_test(&sig->sigcnt)) | 177 | if (atomic_dec_and_test(&sig->sigcnt)) { |
178 | sched_autogroup_exit(sig); | ||
178 | free_signal_struct(sig); | 179 | free_signal_struct(sig); |
180 | } | ||
179 | } | 181 | } |
180 | 182 | ||
181 | void __put_task_struct(struct task_struct *tsk) | 183 | void __put_task_struct(struct task_struct *tsk) |
@@ -273,6 +275,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) | |||
273 | 275 | ||
274 | setup_thread_stack(tsk, orig); | 276 | setup_thread_stack(tsk, orig); |
275 | clear_user_return_notifier(tsk); | 277 | clear_user_return_notifier(tsk); |
278 | clear_tsk_need_resched(tsk); | ||
276 | stackend = end_of_stack(tsk); | 279 | stackend = end_of_stack(tsk); |
277 | *stackend = STACK_END_MAGIC; /* for overflow detection */ | 280 | *stackend = STACK_END_MAGIC; /* for overflow detection */ |
278 | 281 | ||
@@ -904,6 +907,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | |||
904 | posix_cpu_timers_init_group(sig); | 907 | posix_cpu_timers_init_group(sig); |
905 | 908 | ||
906 | tty_audit_fork(sig); | 909 | tty_audit_fork(sig); |
910 | sched_autogroup_fork(sig); | ||
907 | 911 | ||
908 | sig->oom_adj = current->signal->oom_adj; | 912 | sig->oom_adj = current->signal->oom_adj; |
909 | sig->oom_score_adj = current->signal->oom_score_adj; | 913 | sig->oom_score_adj = current->signal->oom_score_adj; |
@@ -1314,7 +1318,7 @@ bad_fork_cleanup_mm: | |||
1314 | } | 1318 | } |
1315 | bad_fork_cleanup_signal: | 1319 | bad_fork_cleanup_signal: |
1316 | if (!(clone_flags & CLONE_THREAD)) | 1320 | if (!(clone_flags & CLONE_THREAD)) |
1317 | free_signal_struct(p->signal); | 1321 | put_signal_struct(p->signal); |
1318 | bad_fork_cleanup_sighand: | 1322 | bad_fork_cleanup_sighand: |
1319 | __cleanup_sighand(p->sighand); | 1323 | __cleanup_sighand(p->sighand); |
1320 | bad_fork_cleanup_fs: | 1324 | bad_fork_cleanup_fs: |