VMCLEAR implementation for Enlightened VMCS is not entirely correct when something else than the currently active eVMCS on the calling vCPU is targeted. In case there's no currently active eVMCS on the calling vCPU we are corrupting the targeted area by writing to the non-existent launch_state field. Fix the logic by always treating the targeted area as 'enlightened' in case Enlightened VMEntry is enabled on the calling vCPU. Changes since v1: - 'evmcs_vmptr' -> 'evmcs_gpa' [Paolo Bonzini] - avoid nested_release_evmcs() in handle_vmclear even for the currently active eVMCS on the calling vCPU [Liran Alon], PATCH1 added to support the change. Vitaly Kuznetsov (2): x86/KVM/nVMX: don't use clean fields data on enlightened VMLAUNCH x86/kvm/nVMX: fix VMCLEAR when Enlightened VMCS is in use arch/x86/kvm/vmx/evmcs.c | 18 ++++++++++++++ arch/x86/kvm/vmx/evmcs.h | 1 + arch/x86/kvm/vmx/nested.c | 52 ++++++++++++++++++++++----------------- 3 files changed, 49 insertions(+), 22 deletions(-) -- 2.20.1