diff options
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/process.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c index a418ee4c8c62..cbbc6adc1a92 100644 --- a/arch/x86_64/kernel/process.c +++ b/arch/x86_64/kernel/process.c | |||
@@ -109,7 +109,11 @@ void exit_idle(void) | |||
109 | static void default_idle(void) | 109 | static void default_idle(void) |
110 | { | 110 | { |
111 | current_thread_info()->status &= ~TS_POLLING; | 111 | current_thread_info()->status &= ~TS_POLLING; |
112 | smp_mb__after_clear_bit(); | 112 | /* |
113 | * TS_POLLING-cleared state must be visible before we | ||
114 | * test NEED_RESCHED: | ||
115 | */ | ||
116 | smp_mb(); | ||
113 | local_irq_disable(); | 117 | local_irq_disable(); |
114 | if (!need_resched()) { | 118 | if (!need_resched()) { |
115 | /* Enables interrupts one instruction before HLT. | 119 | /* Enables interrupts one instruction before HLT. |