diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2012-11-05 15:58:32 +0100 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2012-11-05 15:58:32 +0100 |
commit | 3fd9396af83a1e69eaf9ebb573207431d8f265b6 (patch) | |
tree | f221f5777695de71ea97423c67438bca1746e26c /arch/x86/kernel/entry_32.S | |
parent | arm64: Move PCI_IOBASE closer to MODULES_VADDR (diff) | |
parent | Linux 3.7-rc4 (diff) | |
download | linux-3fd9396af83a1e69eaf9ebb573207431d8f265b6.tar.xz linux-3fd9396af83a1e69eaf9ebb573207431d8f265b6.zip |
Merge tag 'v3.7-rc4' into upstream-master
Linux 3.7-rc4
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index a1193aef6d7d..88b725aa1d52 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -1035,7 +1035,7 @@ ENTRY(xen_sysenter_target) ENTRY(xen_hypervisor_callback) CFI_STARTPROC - pushl_cfi $0 + pushl_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL TRACE_IRQS_OFF @@ -1077,14 +1077,16 @@ ENTRY(xen_failsafe_callback) 2: mov 8(%esp),%es 3: mov 12(%esp),%fs 4: mov 16(%esp),%gs + /* EAX == 0 => Category 1 (Bad segment) + EAX != 0 => Category 2 (Bad IRET) */ testl %eax,%eax popl_cfi %eax lea 16(%esp),%esp CFI_ADJUST_CFA_OFFSET -16 jz 5f addl $16,%esp - jmp iret_exc # EAX != 0 => Category 2 (Bad IRET) -5: pushl_cfi $0 # EAX == 0 => Category 1 (Bad segment) + jmp iret_exc +5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL jmp ret_from_exception CFI_ENDPROC |