• Paolo Bonzini's avatar
    KVM: nVMX: reorganize initial steps of vmx_set_nested_state · 9fd58877
    Paolo Bonzini authored
    Commit 332d0797 ("KVM: nVMX: KVM_SET_NESTED_STATE - Tear down old EVMCS
    state before setting new state", 2019-05-02) broke evmcs_test because the
    eVMCS setup must be performed even if there is no VMXON region defined,
    as long as the eVMCS bit is set in the assist page.
    
    While the simplest possible fix would be to add a check on
    kvm_state->flags & KVM_STATE_NESTED_EVMCS in the initial "if" that
    covers kvm_state->hdr.vmx.vmxon_pa == -1ull, that is quite ugly.
    
    Instead, this patch moves checks earlier in the function and
    conditionalizes them on kvm_state->hdr.vmx.vmxon_pa, so that
    vmx_set_nested_state always goes through vmx_leave_nested
    and nested_enable_evmcs.
    
    Fixes: 332d0797 ("KVM: nVMX: KVM_SET_NESTED_STATE - Tear down old EVMCS state before setting new state")
    Cc: Aaron Lewis <aaronlewis@google.com>
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9fd58877
nested.c 176 KB