diff options
Diffstat (limited to 'arch/i386/kernel/apm.c')
-rw-r--r-- | arch/i386/kernel/apm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index b75cff25de4..19901692754 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c | |||
@@ -785,7 +785,11 @@ static int apm_do_idle(void) | |||
785 | polling = !!(current_thread_info()->status & TS_POLLING); | 785 | polling = !!(current_thread_info()->status & TS_POLLING); |
786 | if (polling) { | 786 | if (polling) { |
787 | current_thread_info()->status &= ~TS_POLLING; | 787 | current_thread_info()->status &= ~TS_POLLING; |
788 | smp_mb__after_clear_bit(); | 788 | /* |
789 | * TS_POLLING-cleared state must be visible before we | ||
790 | * test NEED_RESCHED: | ||
791 | */ | ||
792 | smp_mb(); | ||
789 | } | 793 | } |
790 | if (!need_resched()) { | 794 | if (!need_resched()) { |
791 | idled = 1; | 795 | idled = 1; |