Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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