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: jia zhang <jia.zhang2008@gmail.com> Acked-by: Alexander van Heukelum <heukelum@fastmail.fm> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
f377fa123d
commit
5f5db59132
2 changed files with 2 additions and 0 deletions
|
@ -1051,6 +1051,7 @@ ENTRY(kernel_thread_helper)
|
|||
push %eax
|
||||
CFI_ADJUST_CFA_OFFSET 4
|
||||
call do_exit
|
||||
ud2 # padding for call trace
|
||||
CFI_ENDPROC
|
||||
ENDPROC(kernel_thread_helper)
|
||||
|
||||
|
|
|
@ -1172,6 +1172,7 @@ child_rip:
|
|||
# exit
|
||||
mov %eax, %edi
|
||||
call do_exit
|
||||
ud2 # padding for call trace
|
||||
CFI_ENDPROC
|
||||
ENDPROC(child_rip)
|
||||
|
||||
|
|
Loading…
Reference in a new issue