KVM: x86/mmu: Use common TDP MMU zap helper for MMU notifier unmap hook
authorSean Christopherson <seanjc@google.com>
Wed, 15 Dec 2021 01:15:54 +0000 (01:15 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 10 Feb 2022 18:47:06 +0000 (13:47 -0500)
Use the common TDP MMU zap helper when handling an MMU notifier unmap
event, the two flows are semantically identical.  Consolidate the code in
preparation for a future bug fix, as both kvm_tdp_mmu_unmap_gfn_range()
and __kvm_tdp_mmu_zap_gfn_range() are guilty of not zapping SPTEs in
invalid roots.

No functional change intended.

Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20211215011557.399940-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/tdp_mmu.c

index bc9e3553fba2d4ac0d0853ce74ad1cd2363036fa..b9814e2b397f082b6f51a28770c61924f2527165 100644 (file)
@@ -1032,13 +1032,8 @@ int kvm_tdp_mmu_map(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
 bool kvm_tdp_mmu_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range,
                                 bool flush)
 {
-       struct kvm_mmu_page *root;
-
-       for_each_tdp_mmu_root_yield_safe(kvm, root, range->slot->as_id, false)
-               flush = zap_gfn_range(kvm, root, range->start, range->end,
-                                     range->may_block, flush, false);
-
-       return flush;
+       return __kvm_tdp_mmu_zap_gfn_range(kvm, range->slot->as_id, range->start,
+                                          range->end, range->may_block, flush);
 }
 
 typedef bool (*tdp_handler_t)(struct kvm *kvm, struct tdp_iter *iter,