[PATCH] x86_64: interrupt handling fix
authorAndi Kleen <ak@suse.de>
Sun, 1 May 2005 15:58:51 +0000 (08:58 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sun, 1 May 2005 15:58:51 +0000 (08:58 -0700)
- 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>
arch/x86_64/kernel/entry.S

index 3233a15..1086b5f 100644 (file)
@@ -296,6 +296,7 @@ int_very_careful:
        call syscall_trace_leave
        popq %rdi
        andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
        call syscall_trace_leave
        popq %rdi
        andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
+       cli
        jmp int_restore_rest
        
 int_signal:
        jmp int_restore_rest
        
 int_signal:
@@ -307,6 +308,7 @@ int_signal:
 1:     movl $_TIF_NEED_RESCHED,%edi    
 int_restore_rest:
        RESTORE_REST
 1:     movl $_TIF_NEED_RESCHED,%edi    
 int_restore_rest:
        RESTORE_REST
+       cli
        jmp int_with_check
        CFI_ENDPROC
                
        jmp int_with_check
        CFI_ENDPROC
                
@@ -490,7 +492,8 @@ retint_signal:
        call do_notify_resume
        RESTORE_REST
        cli
        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
        jmp retint_check
 
 #ifdef CONFIG_PREEMPT