diff options
author | Andi Kleen <ak@suse.de> | 2005-04-16 18:25:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:25:04 -0400 |
commit | cdd219cd1f9e657aead247dfa1ecfdeb37efdf70 (patch) | |
tree | ee5a3c58d6cb74d8fd9b0fe823c51d554ef115de /arch/x86_64 | |
parent | 6fefb0d17599d63e9d30c23bcbe2d4e06477cd55 (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/x86_64')
-rw-r--r-- | arch/x86_64/kernel/entry.S | 2 |
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 |
455 | retint_swapgs: | 456 | retint_swapgs: |
456 | cli | ||
457 | swapgs | 457 | swapgs |
458 | retint_restore_args: | 458 | retint_restore_args: |
459 | cli | 459 | cli |