OSDN Git Service

KVM: nVMX: use correct clean fields when copying from eVMCS
authorVitaly Kuznetsov <vkuznets@redhat.com>
Thu, 13 Jun 2019 11:35:02 +0000 (13:35 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 13 Jun 2019 14:05:29 +0000 (16:05 +0200)
Unfortunately, a couple of mistakes were made while implementing
Enlightened VMCS support, in particular, wrong clean fields were
used in copy_enlightened_to_vmcs12():
- exception_bitmap is covered by CONTROL_EXCPN;
- vm_exit_controls/pin_based_vm_exec_control/secondary_vm_exec_control
  are covered by CONTROL_GRP1.

Fixes: 945679e301ea0 ("KVM: nVMX: add enlightened VMCS state")
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/nested.c

index 1032f06..d3940da 100644 (file)
@@ -1397,7 +1397,7 @@ static int copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx)
        }
 
        if (unlikely(!(evmcs->hv_clean_fields &
-                      HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC))) {
+                      HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EXCPN))) {
                vmcs12->exception_bitmap = evmcs->exception_bitmap;
        }
 
@@ -1437,7 +1437,7 @@ static int copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx)
        }
 
        if (unlikely(!(evmcs->hv_clean_fields &
-                      HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1))) {
+                      HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1))) {
                vmcs12->pin_based_vm_exec_control =
                        evmcs->pin_based_vm_exec_control;
                vmcs12->vm_exit_controls = evmcs->vm_exit_controls;