pgprintk("%s: gpte %llx spte %p\n", __func__, (u64)gpte, spte);
        pte_access = sp->role.access & FNAME(gpte_access)(vcpu, gpte);
 -      if (gpte_to_gfn(gpte) != vcpu->arch.update_pte.gfn)
 +      pfn = gfn_to_pfn_atomic(vcpu->kvm, gpte_to_gfn(gpte));
 +      if (is_error_pfn(pfn)) {
 +              kvm_release_pfn_clean(pfn);
                return;
 -      pfn = vcpu->arch.update_pte.pfn;
 -      if (is_error_pfn(pfn))
 -              return;
 -      if (mmu_notifier_retry(vcpu, vcpu->arch.update_pte.mmu_seq))
 +      }
 +      if (mmu_notifier_retry(vcpu, mmu_seq))
                return;
 -      kvm_get_pfn(pfn);
 +
        /*
-        * we call mmu_set_spte() with host_writable = true beacuse that
+        * we call mmu_set_spte() with host_writable = true because that
         * vcpu->arch.update_pte.pfn was fetched from get_user_pages(write = 1).
         */
        mmu_set_spte(vcpu, spte, sp->role.access, pte_access, 0, 0,