summaryrefslogtreecommitdiffstats
path: root/kernel/smpboot.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-04-24 14:43:36 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-04-24 14:43:36 +1000
commit234d15def96ac49027dc869f7bc250d5cb0eb5d7 (patch)
tree51fba17fa3949138c73640ba7cd53988ac712340 /kernel/smpboot.c
parent6747e83235caecd30b186d1282e4eba7679f81b7 (diff)
parent60d509fa6a9c4653a86ad830e4c4b30360b23f0e (diff)
downloadlinux-234d15def96ac49027dc869f7bc250d5cb0eb5d7.tar.gz
linux-234d15def96ac49027dc869f7bc250d5cb0eb5d7.tar.bz2
linux-234d15def96ac49027dc869f7bc250d5cb0eb5d7.zip
Merge remote-tracking branch 'origin/master' into next
Merge upstream to get the audit fixes
Diffstat (limited to 'kernel/smpboot.c')
-rw-r--r--kernel/smpboot.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/smpboot.c b/kernel/smpboot.c
index 8eaed9aa9cf0..02fc5c933673 100644
--- a/kernel/smpboot.c
+++ b/kernel/smpboot.c
@@ -185,8 +185,18 @@ __smpboot_create_thread(struct smp_hotplug_thread *ht, unsigned int cpu)
}
get_task_struct(tsk);
*per_cpu_ptr(ht->store, cpu) = tsk;
- if (ht->create)
- ht->create(cpu);
+ if (ht->create) {
+ /*
+ * Make sure that the task has actually scheduled out
+ * into park position, before calling the create
+ * callback. At least the migration thread callback
+ * requires that the task is off the runqueue.
+ */
+ if (!wait_task_inactive(tsk, TASK_PARKED))
+ WARN_ON(1);
+ else
+ ht->create(cpu);
+ }
return 0;
}