Fix #GPF injection into compat guests in vm86 code
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 30 Jun 2010 17:12:43 +0000 (18:12 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 30 Jun 2010 17:12:43 +0000 (18:12 +0100)
not to let the guest disable interrupts in the real EFLAGS.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/x86/x86_64/compat/traps.c

index 69014383c78c39951ebbf828b83f26738db03440..a9ee983a903d71b544b91350ec2907cf93237de1 100644 (file)
@@ -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;