* function cannot yield, it will not release the MMU lock or reschedule and
  * the caller must ensure it does not supply too large a GFN range, or the
  * operation can cause a soft lockup.
- *
- * If shared is true, this thread holds the MMU lock in read mode and must
- * account for the possibility that other threads are modifying the paging
- * structures concurrently. If shared is false, this thread should hold the
- * MMU lock in write mode.
  */
 static bool zap_gfn_range(struct kvm *kvm, struct kvm_mmu_page *root,
-                         gfn_t start, gfn_t end, bool can_yield, bool flush,
-                         bool shared)
+                         gfn_t start, gfn_t end, bool can_yield, bool flush)
 {
        bool zap_all = (start == 0 && end >= tdp_mmu_max_gfn_host());
        struct tdp_iter iter;
 
        end = min(end, tdp_mmu_max_gfn_host());
 
-       kvm_lockdep_assert_mmu_lock_held(kvm, shared);
+       lockdep_assert_held_write(&kvm->mmu_lock);
 
        rcu_read_lock();
 
        for_each_tdp_pte_min_level(iter, root, min_level, start, end) {
-retry:
                if (can_yield &&
-                   tdp_mmu_iter_cond_resched(kvm, &iter, flush, shared)) {
+                   tdp_mmu_iter_cond_resched(kvm, &iter, flush, false)) {
                        flush = false;
                        continue;
                }
                    !is_last_spte(iter.old_spte, iter.level))
                        continue;
 
-               if (!shared) {
-                       tdp_mmu_set_spte(kvm, &iter, 0);
-                       flush = true;
-               } else if (tdp_mmu_zap_spte_atomic(kvm, &iter)) {
-                       goto retry;
-               }
+               tdp_mmu_set_spte(kvm, &iter, 0);
+               flush = true;
        }
 
        rcu_read_unlock();
        struct kvm_mmu_page *root;
 
        for_each_tdp_mmu_root_yield_safe(kvm, root, as_id)
-               flush = zap_gfn_range(kvm, root, start, end, can_yield, flush,
-                                     false);
+               flush = zap_gfn_range(kvm, root, start, end, can_yield, flush);
 
        return flush;
 }