Hi: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> writes: >When an EVMCS enabled L1 guest on KVM will tries doing enlightened VMEnter with EVMCS GPA = 0 the host crashes because the > >evmcs_gpa != vmx->nested.hv_evmcs_vmptr > >condition in nested_vmx_handle_enlightened_vmptrld() will evaluate to false (as nested.hv_evmcs_vmptr is zeroed after init). The crash will happen on vmx->nested.hv_evmcs pointer dereference. > >Another problematic EVMCS ptr value is '-1' but it only causes host crash after nested_release_evmcs() invocation. The problem is exactly the same as with '0', we mistakenly think that the EVMCS pointer hasn't changed and thus nested.hv_evmcs_vmptr is valid. > >Resolve the issue by adding an additional !vmx->nested.hv_evmcs check to nested_vmx_handle_enlightened_vmptrld(), this way we will always be trying kvm_vcpu_map() when nested.hv_evmcs is NULL and this is supposed to catch all invalid EVMCS GPAs. > >Also, initialize hv_evmcs_vmptr to '0' in nested_release_evmcs() to be consistent with initialization where we don't currently set hv_evmcs_vmptr to '-1'. > >Cc: stable@xxxxxxxxxxxxxxx >Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> >--- > arch/x86/kvm/vmx/nested.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) Good catch! Patch looks good for me. Thanks! Reviewed-by: Miaohe Lin <linmiaohe@xxxxxxxxxx>