# HG changeset patch # User Keir Fraser # Date 1277917963 -3600 # Node ID fae04060a4f4e364c5012692b97ae1eeec3a326e # Parent 7cda3ad44c6d4e799e65b2ffe21e609f50cdb94b Fix #GPF injection into compat guests in vm86 code not to let the guest disable interrupts in the real EFLAGS. Signed-off-by: Ian Campbell --- a/xen/arch/x86/x86_64/compat/traps.c +++ b/xen/arch/x86/x86_64/compat/traps.c @@ -127,9 +127,8 @@ unsigned int compat_iret(void) ti = &v->arch.guest_context.trap_ctxt[13]; if ( TI_GET_IF(ti) ) eflags &= ~X86_EFLAGS_IF; - regs->_eflags = eflags & ~(X86_EFLAGS_VM|X86_EFLAGS_RF| - X86_EFLAGS_NT|X86_EFLAGS_TF); - + regs->_eflags &= ~(X86_EFLAGS_VM|X86_EFLAGS_RF| + X86_EFLAGS_NT|X86_EFLAGS_TF); if ( unlikely(__put_user(0, (u32 *)regs->rsp)) ) goto exit_and_crash; regs->_eip = ti->address;