mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
KVM: VMX: Relax check on unusable segment
Some userspace (e.g. QEMU 1.1) munge the d and g bits of segment descriptors, causing us not to recognize them as unusable segments with emulate_invalid_guest_state=1. Relax the check by testing for segment not present (a non-present segment cannot be usable). Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
510425ff33
commit
f0495f9b99
1 changed files with 1 additions and 3 deletions
|
@ -3198,7 +3198,7 @@ static u32 vmx_segment_access_rights(struct kvm_segment *var)
|
|||
{
|
||||
u32 ar;
|
||||
|
||||
if (var->unusable)
|
||||
if (var->unusable || !var->present)
|
||||
ar = 1 << 16;
|
||||
else {
|
||||
ar = var->type & 15;
|
||||
|
@ -3210,8 +3210,6 @@ static u32 vmx_segment_access_rights(struct kvm_segment *var)
|
|||
ar |= (var->db & 1) << 14;
|
||||
ar |= (var->g & 1) << 15;
|
||||
}
|
||||
if (ar == 0) /* a 0 value means unusable */
|
||||
ar = AR_UNUSABLE_MASK;
|
||||
|
||||
return ar;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue