diff options
author | Andi Kleen <ak@suse.de> | 2005-05-01 08:58:51 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 08:58:51 -0700 |
commit | be9e68703c53fece406bc2e40976a5cfe2a8e77f (patch) | |
tree | efa540d85ab7a193a402ba952e4c8fe63fe18f25 /arch | |
parent | 3c3b73b6f50a47601b1897deb9c6b4b5ecadf591 (diff) | |
download | op-kernel-dev-be9e68703c53fece406bc2e40976a5cfe2a8e77f.zip op-kernel-dev-be9e68703c53fece406bc2e40976a5cfe2a8e77f.tar.gz |
[PATCH] x86_64: interrupt handling fix
- Initialize workmask correctly on interrupt signal handling
- Readd missing cli's in the interrupt return 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.S | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S index 3233a15..1086b5f 100644 --- a/arch/x86_64/kernel/entry.S +++ b/arch/x86_64/kernel/entry.S @@ -296,6 +296,7 @@ int_very_careful: call syscall_trace_leave popq %rdi andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi + cli jmp int_restore_rest int_signal: @@ -307,6 +308,7 @@ int_signal: 1: movl $_TIF_NEED_RESCHED,%edi int_restore_rest: RESTORE_REST + cli jmp int_with_check CFI_ENDPROC @@ -490,7 +492,8 @@ retint_signal: call do_notify_resume RESTORE_REST cli - GET_THREAD_INFO(%rcx) + GET_THREAD_INFO(%rcx) + movl $_TIF_WORK_MASK,%edi jmp retint_check #ifdef CONFIG_PREEMPT |