diff options
author | Jan Beulich <JBeulich@novell.com> | 2010-09-02 08:52:45 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-09-03 02:14:09 -0400 |
commit | e6b04b6b5a3182ae36cf9a69f1aaaee432edc8ad (patch) | |
tree | a1f160e3b7e39b53641948cdd6423e8a22ff50be /arch/x86/kernel | |
parent | 2bfc96a127bc1cc94d26bfaa40159966064f9c8c (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>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/entry_64.S | 9 |
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 | ||
715 | ENTRY(stub_execve) | 715 | ENTRY(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) | |||
735 | ENTRY(stub_rt_sigreturn) | 734 | ENTRY(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: | |||
1445 | error_sti: | 1444 | error_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 | ||
1473 | END(error_entry) | 1472 | END(error_entry) |
1474 | 1473 | ||
1475 | 1474 | ||