Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Andi Kleen and committed by
Linus Torvalds
be9e6870 3c3b73b6

+4 -1
+4 -1
arch/x86_64/kernel/entry.S
··· 296 296 call syscall_trace_leave 297 297 popq %rdi 298 298 andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi 299 + cli 299 300 jmp int_restore_rest 300 301 301 302 int_signal: ··· 308 307 1: movl $_TIF_NEED_RESCHED,%edi 309 308 int_restore_rest: 310 309 RESTORE_REST 310 + cli 311 311 jmp int_with_check 312 312 CFI_ENDPROC 313 313 ··· 492 490 call do_notify_resume 493 491 RESTORE_REST 494 492 cli 495 - GET_THREAD_INFO(%rcx) 493 + GET_THREAD_INFO(%rcx) 494 + movl $_TIF_WORK_MASK,%edi 496 495 jmp retint_check 497 496 498 497 #ifdef CONFIG_PREEMPT