diff options
author | jia zhang <jia.zhang2008@gmail.com> | 2008-11-23 22:47:10 +0800 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-11-23 20:03:36 +0100 |
commit | 5f5db591326779a80cfe490c5d6b6ce9fac08b31 (patch) | |
tree | 4d599ae5e0439050c13023a47b2ee71443efd5e9 /arch/x86/kernel/entry_32.S | |
parent | f377fa123d0ec621e8e361ecc3f2a8ee70e81a2e (diff) | |
download | linux-5f5db591326779a80cfe490c5d6b6ce9fac08b31.tar.gz linux-5f5db591326779a80cfe490c5d6b6ce9fac08b31.tar.bz2 linux-5f5db591326779a80cfe490c5d6b6ce9fac08b31.zip |
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>
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 28b597ef9ca1..f6402c4ba10d 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -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) |