summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2012-02-08 14:34:39 +0100
committerAvi Kivity <avi@redhat.com>2012-03-08 14:10:27 +0200
commit66b0ab8fac1031ffc70eb77491048339f2717a54 (patch)
treed323e068a9f6a95fb46c2fc41b66c3a9ed0c90d4 /arch/x86/kvm
parent7f3d35fddd173e52886d03bc34b5b5d6f5bea343 (diff)
downloadlinux-stable-66b0ab8fac1031ffc70eb77491048339f2717a54.tar.gz
linux-stable-66b0ab8fac1031ffc70eb77491048339f2717a54.tar.bz2
linux-stable-66b0ab8fac1031ffc70eb77491048339f2717a54.zip
KVM: x86 emulator: VM86 segments must have DPL 3
Setting the segment DPL to 0 for at least the VM86 code segment makes the VM entry fail on VMX. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r--arch/x86/kvm/emulate.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index fa310a48591c..b19e9fffe582 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -1244,6 +1244,8 @@ static int load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
seg_desc.type = 3;
seg_desc.p = 1;
seg_desc.s = 1;
+ if (ctxt->mode == X86EMUL_MODE_VM86)
+ seg_desc.dpl = 3;
goto load;
}