提交 bd9cb64d 编写于 作者: J Jan Beulich 提交者: 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: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NAndi Kleen <ak@suse.de>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册