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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Jul 2022 14:34:58 +0000 (16:34 +0200)
[ Upstream commit 83b83a02073ec8d18c77a9bbe0881d710f7a9d32 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kvm/mmu/tdp_mmu.c

index 6195f0d219ae0699e1b5c3bf1327503f59c7b8e1..6c2bb60ccd88b8cd1b985edfd21f7bd7b2409bbf 100644 (file)
@@ -1098,13 +1098,8 @@ int kvm_tdp_mmu_map(struct kvm_vcpu *vcpu, gpa_t gpa, u32 error_code,
 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,