• Peter Gonda's avatar
    Fix unsynchronized access to sev members through svm_register_enc_region · 19a23da5
    Peter Gonda authored
    Grab kvm->lock before pinning memory when registering an encrypted
    region; sev_pin_memory() relies on kvm->lock being held to ensure
    correctness when checking and updating the number of pinned pages.
    
    Add a lockdep assertion to help prevent future regressions.
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: x86@kernel.org
    Cc: kvm@vger.kernel.org
    Cc: stable@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Fixes: 1e80fdc0 ("KVM: SVM: Pin guest memory when SEV is active")
    Signed-off-by: default avatarPeter Gonda <pgonda@google.com>
    
    V2
     - Fix up patch description
     - Correct file paths svm.c -> sev.c
     - Add unlock of kvm->lock on sev_pin_memory error
    
    V1
     - https://lore.kernel.org/kvm/20210126185431.1824530-1-pgonda@google.com/
    
    Message-Id: <20210127161524.2832400-1-pgonda@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    19a23da5
sev.c 49.9 KB