aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <JBeulich@novell.com>2010-09-02 08:52:45 -0400
committerIngo Molnar <mingo@elte.hu>2010-09-03 02:14:09 -0400
commite6b04b6b5a3182ae36cf9a69f1aaaee432edc8ad (patch)
treea1f160e3b7e39b53641948cdd6423e8a22ff50be
parent2bfc96a127bc1cc94d26bfaa40159966064f9c8c (diff)
x86-64: Fix unwind annotations in syscall stubs
With the return address removed from the stack, these should really refer to their caller's register state. Signed-off-by: Jan Beulich <jbeulich@novell.com> Acked-by: Alexander van Heukelum <heukelum@fastmail.fm> LKML-Reference: <4C7FBA3D0200007800013F61@vpn.id2.novell.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/entry_64.S9
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 17be5ec7cbba..16aeff0c3154 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -714,9 +714,8 @@ END(ptregscall_common)
714 714
715ENTRY(stub_execve) 715ENTRY(stub_execve)
716 CFI_STARTPROC 716 CFI_STARTPROC
717 popq %r11 717 addq $8, %rsp
718 CFI_ADJUST_CFA_OFFSET -8 718 PARTIAL_FRAME 0
719 CFI_REGISTER rip, r11
720 SAVE_REST 719 SAVE_REST
721 FIXUP_TOP_OF_STACK %r11 720 FIXUP_TOP_OF_STACK %r11
722 movq %rsp, %rcx 721 movq %rsp, %rcx
@@ -735,7 +734,7 @@ END(stub_execve)
735ENTRY(stub_rt_sigreturn) 734ENTRY(stub_rt_sigreturn)
736 CFI_STARTPROC 735 CFI_STARTPROC
737 addq $8, %rsp 736 addq $8, %rsp
738 CFI_ADJUST_CFA_OFFSET -8 737 PARTIAL_FRAME 0
739 SAVE_REST 738 SAVE_REST
740 movq %rsp,%rdi 739 movq %rsp,%rdi
741 FIXUP_TOP_OF_STACK %r11 740 FIXUP_TOP_OF_STACK %r11
@@ -1445,7 +1444,6 @@ error_swapgs:
1445error_sti: 1444error_sti:
1446 TRACE_IRQS_OFF 1445 TRACE_IRQS_OFF
1447 ret 1446 ret
1448 CFI_ENDPROC
1449 1447
1450/* 1448/*
1451 * There are two places in the kernel that can potentially fault with 1449 * There are two places in the kernel that can potentially fault with
@@ -1470,6 +1468,7 @@ bstep_iret:
1470 /* Fix truncated RIP */ 1468 /* Fix truncated RIP */
1471 movq %rcx,RIP+8(%rsp) 1469 movq %rcx,RIP+8(%rsp)
1472 jmp error_swapgs 1470 jmp error_swapgs
1471 CFI_ENDPROC
1473END(error_entry) 1472END(error_entry)
1474 1473
1475 1474