]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: x86/mmu: only perform eager page splitting on valid roots
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 2 Mar 2022 13:44:22 +0000 (08:44 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 2 Mar 2022 17:54:22 +0000 (12:54 -0500)
Eager page splitting is an optimization; it does not have to be performed on
invalid roots.  By only operating on the valid roots, this removes the
only case in which a reader might acquire a reference to an invalid root.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/tdp_mmu.c

index 388b43d1a0e7b9c204aee71146788f783b05fb52..8f5a36b0898c7324cf9ef7d4d77fd38439f1b12f 100644 (file)
@@ -1464,7 +1464,7 @@ void kvm_tdp_mmu_try_split_huge_pages(struct kvm *kvm,
 
        kvm_lockdep_assert_mmu_lock_held(kvm, shared);
 
-       for_each_tdp_mmu_root_yield_safe(kvm, root, slot->as_id, shared) {
+       for_each_valid_tdp_mmu_root_yield_safe(kvm, root, slot->as_id, shared) {
                r = tdp_mmu_split_huge_pages_root(kvm, root, start, end, target_level, shared);
                if (r) {
                        kvm_tdp_mmu_put_root(kvm, root, shared);