return false;
 
        walk_shadow_page_lockless_begin(vcpu);
-       for_each_shadow_entry_lockless(vcpu, gva, iterator, spte)
-               if (!is_shadow_present_pte(spte) || iterator.level < level)
-                       break;
 
        do {
                bool remove_write_prot = false;
                bool remove_acc_track;
 
+               for_each_shadow_entry_lockless(vcpu, gva, iterator, spte)
+                       if (!is_shadow_present_pte(spte) ||
+                           iterator.level < level)
+                               break;
+
                sp = page_header(__pa(iterator.sptep));
                if (!is_last_spte(spte, sp->role.level))
                        break;
                        break;
                }
 
-               spte = mmu_spte_get_lockless(iterator.sptep);
-
        } while (true);
 
        trace_fast_page_fault(vcpu, gva, error_code, iterator.sptep,