Skip to content

Commit 19e612c

Browse files
committed
KVM: guest_memfd: Add helpers to query SHARED vs. PRIVATE for a given page
Add helpers to check if a given page in a guest_memfd instance is PRIVATE versus SHARED, and use the "is shared" helper instead of an open-coded equivalent in the user pagefault handler. In addition to the immediate usage, providing an "is private" helper will allow cleaning up the so called prepare() code, and eventually will be heavily used once in-place conversion support comes along. No functional change intended. Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> Reviewed-by: Ackerley Tng <ackerleytng@google.com> Reviewed-by: Fuad Tabba <fuad.tabba@linux.dev> Link: https://patch.msgid.link/20260723210811.72720-6-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent 0f68fab commit 19e612c

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

virt/kvm/guest_memfd.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ static pgoff_t kvm_gmem_get_index(struct kvm_memory_slot *slot, gfn_t gfn)
6060
return gfn - slot->base_gfn + slot->gmem.pgoff;
6161
}
6262

63+
static bool kvm_gmem_is_private_mem(struct inode *inode, pgoff_t index)
64+
{
65+
return !(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED);
66+
}
67+
68+
static bool kvm_gmem_is_shared_mem(struct inode *inode, pgoff_t index)
69+
{
70+
return !kvm_gmem_is_private_mem(inode, index);
71+
}
72+
6373
static int __kvm_gmem_prepare_folio(struct kvm *kvm, struct kvm_memory_slot *slot,
6474
pgoff_t index, struct folio *folio)
6575
{
@@ -397,7 +407,7 @@ static vm_fault_t kvm_gmem_fault_user_mapping(struct vm_fault *vmf)
397407
if (((loff_t)vmf->pgoff << PAGE_SHIFT) >= i_size_read(inode))
398408
return VM_FAULT_SIGBUS;
399409

400-
if (!(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED))
410+
if (!kvm_gmem_is_shared_mem(inode, vmf->pgoff))
401411
return VM_FAULT_SIGBUS;
402412

403413
folio = kvm_gmem_get_folio(inode, vmf->pgoff);

0 commit comments

Comments
 (0)