sched: Do not use smp_processor_id() with preempt enabled in smpboot_thread_fn
PATCH 1/1 sched: 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.
Signed-off-by Con Kolivas <[email protected]>
--- kernel/smpboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/smpboot.c +1 -1
@@ -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 ;
tip-bot for Con Kolivas
merge bot[tip:sched/core] sched/core: Do not use smp_processor_id() with preempt enabled in smpboot_thread_fn()
sched/core: Do not use smp_processor_id() with preempt enabled in smpboot_thread_fn()
Commit-ID: 4fa5cd5245b627db88c9ca08ae442373b02596b4 Gitweb: http://git.kernel.org/tip/4fa5cd5245b627db88c9ca08ae442373b02596b4 Author: Con Kolivas <[email protected]> AuthorDate: Tue, 13 Sep 2016 16:27:05 +1000 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 22 Sep 2016 12:28:00 +0200
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 <[email protected]>
Signed-off-by Con Kolivas <[email protected]>
Cc Alfred Chen <[email protected]>
Cc Peter Zijlstra <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- kernel/smpboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/smpboot.c +1 -1
@@ -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 ;