KVM: MMU: load PDPTRs outside mmu_lock
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 8 Apr 2021 12:10:25 +0000 (08:10 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 17 Apr 2021 12:30:52 +0000 (08:30 -0400)
commit4a38162ee9f10f5f67c36f4f5aa4f6be2657efd5
treecc03d02c0620fc31aff035d188c891e7175b98b2
parentd9bd0082e2e2f38c4a15fa53f06ef0817102b4a6
KVM: MMU: load PDPTRs outside mmu_lock

On SVM, reading PDPTRs might access guest memory, which might fault
and thus might sleep.  On the other hand, it is not possible to
release the lock after make_mmu_pages_available has been called.

Therefore, push the call to make_mmu_pages_available and the
mmu_lock critical section within mmu_alloc_direct_roots and
mmu_alloc_shadow_roots.

Reported-by: Wanpeng Li <wanpengli@tencent.com>
Co-developed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c