]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86/mmu: Reword a misleading comment about checking gpte_changed()
authorSean Christopherson <seanjc@google.com>
Fri, 2 Aug 2024 20:39:00 +0000 (13:39 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 30 Aug 2024 02:05:55 +0000 (19:05 -0700)
Rewrite the comment in FNAME(fetch) to explain why KVM needs to check that
the gPTE is still fresh before continuing the shadow page walk, even if
KVM already has a linked shadow page for the gPTE in question.

No functional change intended.

Link: https://lore.kernel.org/r/20240802203900.348808-4-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/mmu/paging_tmpl.h

index 480c5412299173258cfd5c89fcc907b96c223b10..405bd7ceee2a3546e02f0e1151574a7a3f8e03db 100644 (file)
@@ -695,8 +695,14 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault,
                        return RET_PF_RETRY;
 
                /*
-                * Verify that the gpte in the page we've just write
-                * protected is still there.
+                * Verify that the gpte in the page, which is now either
+                * write-protected or unsync, wasn't modified between the fault
+                * and acquiring mmu_lock.  This needs to be done even when
+                * reusing an existing shadow page to ensure the information
+                * gathered by the walker matches the information stored in the
+                * shadow page (which could have been modified by a different
+                * vCPU even if the page was already linked).  Holding mmu_lock
+                * prevents the shadow page from changing after this point.
                 */
                if (FNAME(gpte_changed)(vcpu, gw, it.level - 1))
                        return RET_PF_RETRY;