aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2005-04-16 18:25:04 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:25:04 -0400
commitcdd219cd1f9e657aead247dfa1ecfdeb37efdf70 (patch)
treeee5a3c58d6cb74d8fd9b0fe823c51d554ef115de /arch
parent6fefb0d17599d63e9d30c23bcbe2d4e06477cd55 (diff)
[PATCH] x86_64: Fix a small missing schedule race
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86_64/kernel/entry.S2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
index 3e888c2e5a06..887c5f017d28 100644
--- a/arch/x86_64/kernel/entry.S
+++ b/arch/x86_64/kernel/entry.S
@@ -284,6 +284,7 @@ int_careful:
284 pushq %rdi 284 pushq %rdi
285 call schedule 285 call schedule
286 popq %rdi 286 popq %rdi
287 cli
287 jmp int_with_check 288 jmp int_with_check
288 289
289 /* handle signals and tracing -- both require a full stack frame */ 290 /* handle signals and tracing -- both require a full stack frame */
@@ -453,7 +454,6 @@ retint_check:
453 andl %edi,%edx 454 andl %edi,%edx
454 jnz retint_careful 455 jnz retint_careful
455retint_swapgs: 456retint_swapgs:
456 cli
457 swapgs 457 swapgs
458retint_restore_args: 458retint_restore_args:
459 cli 459 cli