KVM: nVMX: Sync unsync'd vmcs02 state to vmcs12 on migration
authorMaxim Levitsky <mlevitsk@redhat.com>
Thu, 14 Jan 2021 20:54:47 +0000 (22:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Feb 2021 22:28:41 +0000 (23:28 +0100)
commit427adbb3be8a0dd790bd892207b166cf27515185
treeeb6d5f25e6781f880e58e72b6e81eebcb50063af
parentcffcb5e0fe2c994f0aa5d01b3c16e3f8a59350aa
KVM: nVMX: Sync unsync'd vmcs02 state to vmcs12 on migration

commit d51e1d3f6b4236e0352407d8a63f5c5f71ce193d upstream.

Even when we are outside the nested guest, some vmcs02 fields
may not be in sync vs vmcs12.  This is intentional, even across
nested VM-exit, because the sync can be delayed until the nested
hypervisor performs a VMCLEAR or a VMREAD/VMWRITE that affects those
rarely accessed fields.

However, during KVM_GET_NESTED_STATE, the vmcs12 has to be up to date to
be able to restore it.  To fix that, call copy_vmcs02_to_vmcs12_rare()
before the vmcs12 contents are copied to userspace.

Fixes: 7952d769c29ca ("KVM: nVMX: Sync rarely accessed guest fields only when needed")
Reviewed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20210114205449.8715-2-mlevitsk@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/vmx/nested.c