Commit 5f5db591 authored by jia zhang's avatar jia zhang Committed by Ingo Molnar

x86, debug: remove the confusing entry in call trace

Impact: improve backtrace quality

avoid the confusion in call trace because of the lack of padding at the
tail of function.

When do_exit gets called, the return address behind call instruction is
pushed into stack. If something get wrong in do_exit, for x86_64, the
entry "kernel_execve +0x00/0xXX" rather than "child_rip +0xYY/0xZZ" is
in the call trace.

That looks confusing, so add a u2d to make the return address still part
of the original call site. (This also catches any instances of us returning
from that function somehow.)
Signed-off-by: default avatarjia zhang <jia.zhang2008@gmail.com>
Acked-by: default avatarAlexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent f377fa12
...@@ -1051,6 +1051,7 @@ ENTRY(kernel_thread_helper) ...@@ -1051,6 +1051,7 @@ ENTRY(kernel_thread_helper)
push %eax push %eax
CFI_ADJUST_CFA_OFFSET 4 CFI_ADJUST_CFA_OFFSET 4
call do_exit call do_exit
ud2 # padding for call trace
CFI_ENDPROC CFI_ENDPROC
ENDPROC(kernel_thread_helper) ENDPROC(kernel_thread_helper)
......
...@@ -1172,6 +1172,7 @@ child_rip: ...@@ -1172,6 +1172,7 @@ child_rip:
# exit # exit
mov %eax, %edi mov %eax, %edi
call do_exit call do_exit
ud2 # padding for call trace
CFI_ENDPROC CFI_ENDPROC
ENDPROC(child_rip) ENDPROC(child_rip)
......
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