• Sean Christopherson's avatar
    KVM: SVM: Do not allow SEV/SEV-ES initialization after vCPUs are created · 8727906f
    Sean Christopherson authored
    Reject KVM_SEV_INIT and KVM_SEV_ES_INIT if they are attempted after one
    or more vCPUs have been created.  KVM assumes a VM is tagged SEV/SEV-ES
    prior to vCPU creation, e.g. init_vmcb() needs to mark the VMCB as SEV
    enabled, and svm_create_vcpu() needs to allocate the VMSA.  At best,
    creating vCPUs before SEV/SEV-ES init will lead to unexpected errors
    and/or behavior, and at worst it will crash the host, e.g.
    sev_launch_update_vmsa() will dereference a null svm->vmsa pointer.
    
    Fixes: 1654efcb ("KVM: SVM: Add KVM_SEV_INIT command")
    Fixes: ad73109a ("KVM: SVM: Provide support to launch and run an SEV-ES guest")
    Cc: stable@vger.kernel.org
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210331031936.2495277-4-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    8727906f
sev.c 50.7 KB