06b9899ef9
checked in (request 49271) OBS-URL: https://build.opensuse.org/request/show/49271 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=75
26 lines
988 B
Diff
26 lines
988 B
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir.fraser@citrix.com>
|
|
# 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 <ian.campbell@citrix.com>
|
|
|
|
--- 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;
|