]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 14 Jul 2019 06:09:41 +0000 (08:09 +0200)
[ Upstream commit f9bc5227652df4900eff12a9b8b38e9a8c7c78ea ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kvm/vmx/nested.c

index 5fa0c17d0b412f00509995cb3a6ae33fc24239e4..4ca834d22169177296110be68d33b08bd13505ec 100644 (file)
@@ -1404,7 +1404,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;
        }
 
@@ -1444,7 +1444,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;