[PATCH] x86_64: Fix a small missing schedule race
authorAndi Kleen <ak@suse.de>
Sat, 16 Apr 2005 22:25:04 +0000 (15:25 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 16 Apr 2005 22:25:04 +0000 (15:25 -0700)
Could lead to a lost reschedule event when the process already rescheduled on
exception exit, and needs it again while still being in the kernel.  Unlikely
case though.

Also remove one redundant cli in another entry.S path.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/kernel/entry.S

index 3e888c2e5a06c77eb0a90ff45098eff62f078bf9..887c5f017d28694c8495769a4df04fddaac6389d 100644 (file)
@@ -284,6 +284,7 @@ int_careful:
        pushq %rdi
        call schedule
        popq %rdi
+       cli
        jmp int_with_check
 
        /* handle signals and tracing -- both require a full stack frame */
@@ -453,7 +454,6 @@ retint_check:
        andl %edi,%edx
        jnz  retint_careful
 retint_swapgs:         
-       cli
        swapgs 
 retint_restore_args:                           
        cli