diff options
author | Srivatsa Vaddagiri <vatsa@in.ibm.com> | 2005-09-16 22:27:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-17 14:49:59 -0400 |
commit | 26ff6ad9786abf6f40a6d3cbb89753b4fa50cb00 (patch) | |
tree | 8abf9b85bc5f081460f05c3e8f76328dc690f167 | |
parent | fa72e26a640e551637f91122d782d5a85d514f5b (diff) |
[PATCH] CPU hotplug breaks wake_up_new_task
Fix a problem wherein a new-born task is added to a dead CPU.
Signed-off-by: Srivatsa Vaddagiri <vatsa@in.ibm.com>
Acked-by: Nick Piggin <nickpiggin@yahoo.com.au>
Acked-by: Shaohua Li <shaohua.li@intel.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/fork.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 8149f3602881..533ce27f4b2c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1062,7 +1062,8 @@ static task_t *copy_process(unsigned long clone_flags, | |||
1062 | * parent's CPU). This avoids alot of nasty races. | 1062 | * parent's CPU). This avoids alot of nasty races. |
1063 | */ | 1063 | */ |
1064 | p->cpus_allowed = current->cpus_allowed; | 1064 | p->cpus_allowed = current->cpus_allowed; |
1065 | if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed))) | 1065 | if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed) || |
1066 | !cpu_online(task_cpu(p)))) | ||
1066 | set_task_cpu(p, smp_processor_id()); | 1067 | set_task_cpu(p, smp_processor_id()); |
1067 | 1068 | ||
1068 | /* | 1069 | /* |