[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: Andrew Morton <akpm@osdl.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
4724e3e86d
Коммит
bd9cb64df1
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче