[PATCH v2 24/28] KVM: x86/mmu: Do not prefetch sptes on gfns backed by memory attributes
From: Paolo Bonzini
Date: Fri Sep 18 2026 - 04:25:50 EST
From: Nicolas Saenz Julienne <nsaenz@xxxxxxxxxx>
Prefetched SPTEs are always given full access. Do not prefetch GFNs
that have memory protections applied.
Signed-off-by: Nicolas Saenz Julienne <nsaenz@xxxxxxxxxx>
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
---
arch/x86/kvm/mmu/mmu.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 3fd4cc3c57a5..097095f71d60 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -3187,6 +3187,11 @@ static bool kvm_mmu_prefetch_sptes(struct kvm_vcpu *vcpu, gfn_t gfn, u64 *sptep,
return false;
for (i = 0; i < nr_pages; i++, gfn++, sptep++) {
+ if (!kvm_get_memory_attributes(vcpu->kvm, gfn)) {
+ kvm_release_page_clean(pages[i]);
+ continue;
+ }
+
mmu_set_spte(vcpu, slot, sptep, access, gfn,
page_to_pfn(pages[i]), NULL);
--
2.52.0