Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4d3326c authored by Gleb Natapov's avatar Gleb Natapov Committed by Marcelo Tosatti
Browse files

KVM: VMX: fix DPL during entry to protected mode



On CPUs without support for unrestricted guests DPL cannot be smaller
than RPL for data segments during guest entry, but this state can occurs
if a data segment selector changes while vcpu is in real mode to a value
with lowest two bits != 00. Fix that by forcing DPL == RPL on transition
to protected mode.

This is a regression introduced by c865c43d.

Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent 0ca0d818
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2766,6 +2766,7 @@ static void fix_pmode_dataseg(struct kvm_vcpu *vcpu, int seg, struct kvm_segment
	if (!(vmcs_readl(sf->base) == tmp.base && tmp.s)) {
		tmp.base = vmcs_readl(sf->base);
		tmp.selector = vmcs_read16(sf->selector);
		tmp.dpl = tmp.selector & SELECTOR_RPL_MASK;
		tmp.s = 1;
	}
	vmx_set_segment(vcpu, &tmp, seg);