diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-24 14:43:36 +1000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-24 14:43:36 +1000 |
commit | 234d15def96ac49027dc869f7bc250d5cb0eb5d7 (patch) | |
tree | 51fba17fa3949138c73640ba7cd53988ac712340 /kernel/smpboot.c | |
parent | 6747e83235caecd30b186d1282e4eba7679f81b7 (diff) | |
parent | 60d509fa6a9c4653a86ad830e4c4b30360b23f0e (diff) | |
download | linux-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.c | 14 |
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; } |