• Paolo Bonzini's avatar
    KVM: SVM: ensure that EFER.SVME is set when running nested guest or on nested vmexit · 3c346c0c
    Paolo Bonzini authored
    Fixing nested_vmcb_check_save to avoid all TOC/TOU races
    is a bit harder in released kernels, so do the bare minimum
    by avoiding that EFER.SVME is cleared.  This is problematic
    because svm_set_efer frees the data structures for nested
    virtualization if EFER.SVME is cleared.
    
    Also check that EFER.SVME remains set after a nested vmexit;
    clearing it could happen if the bit is zero in the save area
    that is passed to KVM_SET_NESTED_STATE (the save area of the
    nested state corresponds to the nested hypervisor's state
    and is restored on the next nested vmexit).
    
    Cc: stable@vger.kernel.org
    Fixes: 2fcf4876 ("KVM: nSVM: implement on demand allocation of the nested state")
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    3c346c0c
nested.c 33.3 KB