Re: [PATCH 2/4] KVM: x86/mmu: Harden "map private PFN" against unexpected root invalidation
Sean Christopherson <[email protected]>
| Newsgroups | org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Aug 07, 2026, Rick P Edgecombe wrote: > On Thu, 2026-08-06 at 14:40 -0700, Sean Christopherson wrote: > > @@ -5199,10 +5195,21 @@ int kvm_tdp_mmu_map_private_pfn(struct kvm_vcpu *vcpu, gfn_t gfn, kvm_pfn_t pfn) > > if (kvm_test_request(KVM_REQ_VM_DEAD, vcpu)) > > return -EIO; > > > > + r = kvm_mmu_reload(vcpu); > > + if (r) > > + return r; > > + > > cond_resched(); > > > > guard(read_lock)(&kvm->mmu_lock); > > > > + /* > > + * Because slots_lock is held, it should be impossible for roots > > + * to be invalidated after the initial MMU reload. WARN, but > > + * continue and re-reload the MMU to try and keep the VM alive. > > + */ > > It might be a little confusing when no MMU reload follows the comment. Maybe > mention that the MMU reload is above? Either way ok to me. Yeah, I don't love the comment either. The subtlety that it doesn't capture is that KVM_REQ_MMU_FREE_OBSOLETE_ROOTS doesn't actually mean the current root is invalid, just that it might be invalid and the vCPU needs to check. How about this? /* * Because slots_lock is held, it should be impossible for *any* * roots to be invalidated after the initial MMU reload. WARN, * but continue on; the above MMU reload will do the right thing * if the current root is actually invalid. */ > > + WARN_ON_ONCE(kvm_test_request(KVM_REQ_MMU_FREE_OBSOLETE_ROOTS, vcpu)); > > + > > r = kvm_tdp_mmu_map(vcpu, &fault); >