Commit bd9cb64d authored by Jan Beulich's avatar Jan Beulich Committed by Linus Torvalds

[PATCH] x86_64: fix page fault from show_trace()

The introduction of call_softirq switching to the interrupt stack several
releases earlier resulted in a problem with the code in show_trace, which
assumes that it can pick the previous stack pointer from the end of the
interrupt stack.

Cc: Andi Kleen <ak@muc.de>
Cc: Arjan van de Ven <arjanv@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4724e3e8
......@@ -1045,17 +1045,15 @@ ENTRY(call_debug)
ENTRY(call_softirq)
CFI_STARTPROC
movq %gs:pda_irqstackptr,%rax
pushq %r15
CFI_ADJUST_CFA_OFFSET 8
movq %rsp,%r15
CFI_DEF_CFA_REGISTER r15
movq %rsp,%rdx
CFI_DEF_CFA_REGISTER rdx
incl %gs:pda_irqcount
cmove %rax,%rsp
pushq %rdx
/*todo CFI_DEF_CFA_EXPRESSION ...*/
call __do_softirq
movq %r15,%rsp
popq %rsp
CFI_DEF_CFA_REGISTER rsp
decl %gs:pda_irqcount
popq %r15
CFI_ADJUST_CFA_OFFSET -8
ret
CFI_ENDPROC
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment