summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2005-04-17 00:25:04 +0200
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 00:25:04 +0200
commitcdd219cd1f9e657aead247dfa1ecfdeb37efdf70 (patch)
treeee5a3c58d6cb74d8fd9b0fe823c51d554ef115de
parent[PATCH] x86_64: Regularize exception stack handling (diff)
downloadlinux-cdd219cd1f9e657aead247dfa1ecfdeb37efdf70.tar.xz
linux-cdd219cd1f9e657aead247dfa1ecfdeb37efdf70.zip
[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>
-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:
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