sched/core: Do not use smp_processor_id() with preempt enabled in smpboot_thread_fn()
We should not be using smp_processor_id() with preempt enabled. Bug identified and fix provided by Alfred Chen. Reported-by: Alfred Chen <cchalpha@gmail.com> Signed-off-by: Con Kolivas <kernel@kolivas.org> Cc: Alfred Chen <cchalpha@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/2042051.3vvUWIM0vs@hex Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
d59dc7bcfa
commit
4fa5cd5245
|
@ -122,12 +122,12 @@ static int smpboot_thread_fn(void *data)
|
|||
|
||||
if (kthread_should_park()) {
|
||||
__set_current_state(TASK_RUNNING);
|
||||
preempt_enable();
|
||||
if (ht->park && td->status == HP_THREAD_ACTIVE) {
|
||||
BUG_ON(td->cpu != smp_processor_id());
|
||||
ht->park(td->cpu);
|
||||
td->status = HP_THREAD_PARKED;
|
||||
}
|
||||
preempt_enable();
|
||||
kthread_parkme();
|
||||
/* We might have been woken for stop */
|
||||
continue;
|
||||
|
|
Loading…
Reference in a new issue