diff options
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 a1193aef6d7..88b725aa1d5 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  |