aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/entry.S
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-08-30 19:37:08 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2006-08-30 16:05:15 -0700
commitc05991ed12fd71e539dd8de8f5663450cd0c934c (patch)
treee9a86dac1c2bf688d0683be97a5de32af59c175e /arch/x86_64/kernel/entry.S
parent11012d419cfc0e0f78ca356aca03674217910124 (diff)
downloadkernel_samsung_smdk4412-c05991ed12fd71e539dd8de8f5663450cd0c934c.zip
kernel_samsung_smdk4412-c05991ed12fd71e539dd8de8f5663450cd0c934c.tar.gz
kernel_samsung_smdk4412-c05991ed12fd71e539dd8de8f5663450cd0c934c.tar.bz2
[PATCH] x86_64: Add kernel thread stack frame termination for properly stopping stack unwinds.
One open question: Should these added pushes perhaps be made conditional upon CONFIG_STACK_UNWIND or CONFIG_UNWIND_INFO? [AK: Not needed -- these are all very slow paths] Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/entry.S')
-rw-r--r--arch/x86_64/kernel/entry.S3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
index 6f81042..aa8d893 100644
--- a/arch/x86_64/kernel/entry.S
+++ b/arch/x86_64/kernel/entry.S
@@ -973,6 +973,8 @@ ENTRY(kernel_thread)
ENDPROC(kernel_thread)
child_rip:
+ pushq $0 # fake return address
+ CFI_STARTPROC
/*
* Here we are in the child and the registers are set as they were
* at kernel_thread() invocation in the parent.
@@ -983,6 +985,7 @@ child_rip:
# exit
xorl %edi, %edi
call do_exit
+ CFI_ENDPROC
ENDPROC(child_rip)
/*