mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 05:31:15 +00:00
[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:
parent
4724e3e86d
commit
bd9cb64df1
1 changed files with 5 additions and 7 deletions
|
@ -1045,17 +1045,15 @@ ENTRY(call_debug)
|
||||||
ENTRY(call_softirq)
|
ENTRY(call_softirq)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
movq %gs:pda_irqstackptr,%rax
|
movq %gs:pda_irqstackptr,%rax
|
||||||
pushq %r15
|
movq %rsp,%rdx
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
CFI_DEF_CFA_REGISTER rdx
|
||||||
movq %rsp,%r15
|
|
||||||
CFI_DEF_CFA_REGISTER r15
|
|
||||||
incl %gs:pda_irqcount
|
incl %gs:pda_irqcount
|
||||||
cmove %rax,%rsp
|
cmove %rax,%rsp
|
||||||
|
pushq %rdx
|
||||||
|
/*todo CFI_DEF_CFA_EXPRESSION ...*/
|
||||||
call __do_softirq
|
call __do_softirq
|
||||||
movq %r15,%rsp
|
popq %rsp
|
||||||
CFI_DEF_CFA_REGISTER rsp
|
CFI_DEF_CFA_REGISTER rsp
|
||||||
decl %gs:pda_irqcount
|
decl %gs:pda_irqcount
|
||||||
popq %r15
|
|
||||||
CFI_ADJUST_CFA_OFFSET -8
|
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue