Re: [PATCH v6 9/9] KVM: guest_memfd: Make private exactly what can be mapped on page fault
From: Ackerley Tng
Date: Sat Jul 25 2026 - 11:23:17 EST
Sean Christopherson <seanjc@xxxxxxxxxx> writes:
>
> [...snip...]
>
> @@ -799,7 +755,9 @@ int kvm_gmem_get_pfn(struct kvm *kvm, struct kvm_memory_slot *slot,
> {
> pgoff_t index = kvm_gmem_get_index(slot, gfn);
> struct folio *folio;
> - int r = 0;
> + int r = 0, __order;
> +
> + max_order = max_order ?: &__order;
>
> CLASS(gmem_get_file, file)(slot);
> if (!file)
> @@ -814,8 +772,11 @@ int kvm_gmem_get_pfn(struct kvm *kvm, struct kvm_memory_slot *slot,
> folio_mark_uptodate(folio);
> }
>
> +#ifdef CONFIG_HAVE_KVM_ARCH_GMEM_CONVERT
> if (kvm_gmem_is_private_mem(file_inode(file), index))
> - r = kvm_gmem_prepare_folio(kvm, slot, gfn, folio);
> + r = kvm_arch_gmem_make_private(kvm, gfn, *pfn,
> + (kvm_pfn_t)1 << *max_order);
This is correct after __kvm_gmem_get_pfn() is called and errors are
checked for, pfn and max_order must be valid. and max_order is always
non-NULL after the statement with __order above.
Reviewed-by: Ackerley Tng <ackerleytng@xxxxxxxxxx>
> +#endif
>
> folio_unlock(folio);
>
> --
> 2.55.0.229.g6434b31f56-goog