mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
KVM: VMX: make rmode_segment_valid() more strict.
Currently it allows entering vm86 mode if segment limit is greater than 0xffff and db bit is set. Both of those can cause incorrect execution of instruction by cpu since in vm86 mode limit will be set to 0xffff and db will be forced to 0. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
045a282ca4
commit
89efbed02c
@ -3341,15 +3341,13 @@ static bool rmode_segment_valid(struct kvm_vcpu *vcpu, int seg)
|
||||
|
||||
vmx_get_segment(vcpu, &var, seg);
|
||||
var.dpl = 0x3;
|
||||
var.g = 0;
|
||||
var.db = 0;
|
||||
if (seg == VCPU_SREG_CS)
|
||||
var.type = 0x3;
|
||||
ar = vmx_segment_access_rights(&var);
|
||||
|
||||
if (var.base != (var.selector << 4))
|
||||
return false;
|
||||
if (var.limit < 0xffff)
|
||||
if (var.limit != 0xffff)
|
||||
return false;
|
||||
if (ar != 0xf3)
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user