Linux-HyperV List
 help / color / mirror / Atom feed
* [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare
@ 2026-11-05 21:05 Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 01/14] xen/privcmd: convert mmap hook " Lorenzo Stoakes (ARM)
                   ` (13 more replies)
  0 siblings, 14 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Continue the conversion of users of the deprecated f_op->mmap callback to
f_op->mmap_prepare. Keep things gentle this cycle by targeting simple
cases.

No functional change intended.

Build tested on x86-64 (allmodconfig, each patch individually), i386,
arm64 and ppc64le.

<<>>

David, Andrew - I wonder whether one of you guys could take this series
through your tree? Since it's kernel-wide it seems sensible to take it
through an mm tree.

Thanks!

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
Lorenzo Stoakes (ARM) (14):
      xen/privcmd: convert mmap hook to mmap_prepare
      KVM: PPC: Book3S: convert spapr TCE mmap hook to mmap_prepare
      mshv_vtl: convert mmap hooks to mmap_prepare
      vduse: convert IOVA domain mmap hook to mmap_prepare
      x86/sgx: convert vepc mmap hook to mmap_prepare
      udf: convert mmap hook to mmap_prepare
      selinuxfs: convert mmap hooks to mmap_prepare
      xen: convert xenstore interface mmap hooks to mmap_prepare
      soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
      soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
      tee: convert shm mmap hook to mmap_prepare
      misc: bcm-vk: convert mmap hook to mmap_prepare
      ptp: vmclock: convert mmap hook to mmap_prepare
      vhost-vdpa: convert mmap hook to mmap_prepare

 arch/powerpc/kvm/book3s_64_vio.c        |  6 +++---
 arch/x86/kernel/cpu/sgx/virt.c          | 15 ++++++++-------
 drivers/hv/mshv_vtl_main.c              | 14 +++++++-------
 drivers/misc/bcm-vk/bcm_vk_dev.c        | 20 ++++++++++----------
 drivers/ptp/ptp_vmclock.c               | 19 +++++++++----------
 drivers/soc/aspeed/aspeed-lpc-ctrl.c    | 20 +++++++++-----------
 drivers/soc/aspeed/aspeed-p2a-ctrl.c    | 22 ++++++++--------------
 drivers/soc/qcom/rmtfs_mem.c            | 22 ++++++++++------------
 drivers/tee/tee_shm.c                   | 14 +++++++-------
 drivers/vdpa/vdpa_user/iova_domain.c    | 12 ++++++------
 drivers/vhost/vdpa.c                    | 23 ++++++++++++-----------
 drivers/xen/privcmd.c                   | 11 +++++------
 drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++--------
 drivers/xen/xenfs/xenstored.c           | 14 ++++++--------
 fs/udf/file.c                           |  8 ++++----
 security/selinux/selinuxfs.c            | 24 +++++++++++-------------
 16 files changed, 121 insertions(+), 137 deletions(-)
---
base-commit: b61fa14ce6bcbba2cb9a96feea31b760226d6b43
change-id: 20261101-late-2026-mmap_prepare-02c87d23101e

Cheers,
-- 
Lorenzo Stoakes (ARM) <ljs@kernel.org>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 01/14] xen/privcmd: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 02/14] KVM: PPC: Book3S: convert spapr TCE " Lorenzo Stoakes (ARM)
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook.

The hook only sets VMA flags and operations. The VMA private data is
already NULL at this point, so we no longer explicitly clear it.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/xen/privcmd.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 5e56fbc93447..16f96c05af2d 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -1630,14 +1630,13 @@ static const struct vm_operations_struct privcmd_vm_ops = {
 	.fault = privcmd_fault
 };
 
-static int privcmd_mmap(struct file *file, struct vm_area_struct *vma)
+static int privcmd_mmap_prepare(struct vm_area_desc *desc)
 {
 	/* DONTCOPY is essential for Xen because copy_page_range doesn't know
 	 * how to recreate these mappings */
-	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTCOPY |
-			 VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &privcmd_vm_ops;
-	vma->vm_private_data = NULL;
+	vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTCOPY_BIT,
+			   VMA_DONTEXPAND_BIT, VMA_DONTDUMP_BIT);
+	desc->vm_ops = &privcmd_vm_ops;
 
 	return 0;
 }
@@ -1666,7 +1665,7 @@ const struct file_operations xen_privcmd_fops = {
 	.unlocked_ioctl = privcmd_ioctl,
 	.open = privcmd_open,
 	.release = privcmd_release,
-	.mmap = privcmd_mmap,
+	.mmap_prepare = privcmd_mmap_prepare,
 };
 EXPORT_SYMBOL_GPL(xen_privcmd_fops);
 

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 02/14] KVM: PPC: Book3S: convert spapr TCE mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 01/14] xen/privcmd: convert mmap hook " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 03/14] mshv_vtl: convert mmap hooks " Lorenzo Stoakes (ARM)
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only sets the VMA operations.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 arch/powerpc/kvm/book3s_64_vio.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index c5f3f5b29d89..05f6f2c9a432 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -247,9 +247,9 @@ static const struct vm_operations_struct kvm_spapr_tce_vm_ops = {
 	.fault = kvm_spapr_tce_fault,
 };
 
-static int kvm_spapr_tce_mmap(struct file *file, struct vm_area_struct *vma)
+static int kvm_spapr_tce_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &kvm_spapr_tce_vm_ops;
+	desc->vm_ops = &kvm_spapr_tce_vm_ops;
 	return 0;
 }
 
@@ -282,7 +282,7 @@ static int kvm_spapr_tce_release(struct inode *inode, struct file *filp)
 }
 
 static const struct file_operations kvm_spapr_tce_fops = {
-	.mmap           = kvm_spapr_tce_mmap,
+	.mmap_prepare	= kvm_spapr_tce_mmap_prepare,
 	.release	= kvm_spapr_tce_release,
 };
 

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 03/14] mshv_vtl: convert mmap hooks to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 01/14] xen/privcmd: convert mmap hook " Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 02/14] KVM: PPC: Book3S: convert spapr TCE " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 04/14] vduse: convert IOVA domain mmap hook " Lorenzo Stoakes (ARM)
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook for both
the mshv_vtl and mshv_vtl_low devices. These only set VMA operations and
flags.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/hv/mshv_vtl_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/hv/mshv_vtl_main.c b/drivers/hv/mshv_vtl_main.c
index d8225242c73f..e372d4c0188d 100644
--- a/drivers/hv/mshv_vtl_main.c
+++ b/drivers/hv/mshv_vtl_main.c
@@ -832,9 +832,9 @@ static const struct vm_operations_struct mshv_vtl_vm_ops = {
 	.fault = mshv_vtl_fault,
 };
 
-static int mshv_vtl_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mshv_vtl_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &mshv_vtl_vm_ops;
+	desc->vm_ops = &mshv_vtl_vm_ops;
 
 	return 0;
 }
@@ -852,7 +852,7 @@ static const struct file_operations mshv_vtl_fops = {
 	.owner = THIS_MODULE,
 	.unlocked_ioctl = mshv_vtl_ioctl,
 	.release = mshv_vtl_release,
-	.mmap = mshv_vtl_mmap,
+	.mmap_prepare = mshv_vtl_mmap_prepare,
 };
 
 static void mshv_vtl_synic_mask_vmbus_sint(void *info)
@@ -1283,10 +1283,10 @@ static const struct vm_operations_struct mshv_vtl_low_vm_ops = {
 	.huge_fault = mshv_vtl_low_huge_fault,
 };
 
-static int mshv_vtl_low_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mshv_vtl_low_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &mshv_vtl_low_vm_ops;
-	vm_flags_set(vma, VM_HUGEPAGE | VM_MIXEDMAP);
+	desc->vm_ops = &mshv_vtl_low_vm_ops;
+	vma_desc_set_flags(desc, VMA_HUGEPAGE_BIT, VMA_MIXEDMAP_BIT);
 
 	return 0;
 }
@@ -1294,7 +1294,7 @@ static int mshv_vtl_low_mmap(struct file *filp, struct vm_area_struct *vma)
 static const struct file_operations mshv_vtl_low_file_ops = {
 	.owner		= THIS_MODULE,
 	.open		= mshv_vtl_low_open,
-	.mmap		= mshv_vtl_low_mmap,
+	.mmap_prepare	= mshv_vtl_low_mmap_prepare,
 };
 
 static struct miscdevice mshv_vtl_low = {

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 04/14] vduse: convert IOVA domain mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (2 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 03/14] mshv_vtl: convert mmap hooks " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 05/14] x86/sgx: convert vepc " Lorenzo Stoakes (ARM)
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only sets VMA flags, operations and private data.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/vdpa/vdpa_user/iova_domain.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/vdpa/vdpa_user/iova_domain.c b/drivers/vdpa/vdpa_user/iova_domain.c
index b6c958224b7c..64465f690a4d 100644
--- a/drivers/vdpa/vdpa_user/iova_domain.c
+++ b/drivers/vdpa/vdpa_user/iova_domain.c
@@ -575,13 +575,13 @@ static const struct vm_operations_struct vduse_domain_mmap_ops = {
 	.fault = vduse_domain_mmap_fault,
 };
 
-static int vduse_domain_mmap(struct file *file, struct vm_area_struct *vma)
+static int vduse_domain_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vduse_iova_domain *domain = file->private_data;
+	struct vduse_iova_domain *domain = desc->file->private_data;
 
-	vm_flags_set(vma, VM_DONTDUMP | VM_DONTEXPAND);
-	vma->vm_private_data = domain;
-	vma->vm_ops = &vduse_domain_mmap_ops;
+	vma_desc_set_flags(desc, VMA_DONTDUMP_BIT, VMA_DONTEXPAND_BIT);
+	desc->private_data = domain;
+	desc->vm_ops = &vduse_domain_mmap_ops;
 
 	return 0;
 }
@@ -606,7 +606,7 @@ static int vduse_domain_release(struct inode *inode, struct file *file)
 
 static const struct file_operations vduse_domain_fops = {
 	.owner = THIS_MODULE,
-	.mmap = vduse_domain_mmap,
+	.mmap_prepare = vduse_domain_mmap_prepare,
 	.release = vduse_domain_release,
 };
 

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 05/14] x86/sgx: convert vepc mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (3 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 04/14] vduse: convert IOVA domain mmap hook " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:43   ` Jarkko Sakkinen
  2026-11-05 21:05 ` [PATCH 06/14] udf: convert " Lorenzo Stoakes (ARM)
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only checks that the mapping is shared and sets VMA flags, operations and
private data.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
index 6a1933ddc6fc..850990519ca5 100644
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -98,17 +98,18 @@ static const struct vm_operations_struct sgx_vepc_vm_ops = {
 	.fault = sgx_vepc_fault,
 };
 
-static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
+static int sgx_vepc_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct sgx_vepc *vepc = file->private_data;
+	struct sgx_vepc *vepc = desc->file->private_data;
 
-	if (!(vma->vm_flags & VM_SHARED))
+	if (!vma_desc_test(desc, VMA_SHARED_BIT))
 		return -EINVAL;
 
-	vma->vm_ops = &sgx_vepc_vm_ops;
+	desc->vm_ops = &sgx_vepc_vm_ops;
 	/* Don't copy VMA in fork() */
-	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
-	vma->vm_private_data = vepc;
+	vma_desc_set_flags(desc, VMA_PFNMAP_BIT, VMA_IO_BIT, VMA_DONTDUMP_BIT,
+			   VMA_DONTCOPY_BIT);
+	desc->private_data = vepc;
 
 	return 0;
 }
@@ -315,7 +316,7 @@ static const struct file_operations sgx_vepc_fops = {
 	.unlocked_ioctl	= sgx_vepc_ioctl,
 	.compat_ioctl	= sgx_vepc_ioctl,
 	.release	= sgx_vepc_release,
-	.mmap		= sgx_vepc_mmap,
+	.mmap_prepare	= sgx_vepc_mmap_prepare,
 };
 
 static struct miscdevice sgx_vepc_dev = {

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 06/14] udf: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (4 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 05/14] x86/sgx: convert vepc " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 07/14] selinuxfs: convert mmap hooks " Lorenzo Stoakes (ARM)
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only updates the access time and sets the VMA operations.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 fs/udf/file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/udf/file.c b/fs/udf/file.c
index 02e9314818dc..d5e80c6cae96 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -190,10 +190,10 @@ static int udf_release_file(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int udf_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int udf_file_mmap_prepare(struct vm_area_desc *desc)
 {
-	file_accessed(file);
-	vma->vm_ops = &udf_file_vm_ops;
+	file_accessed(desc->file);
+	desc->vm_ops = &udf_file_vm_ops;
 
 	return 0;
 }
@@ -202,7 +202,7 @@ const struct file_operations udf_file_operations = {
 	.read_iter		= generic_file_read_iter,
 	.unlocked_ioctl		= udf_ioctl,
 	.open			= generic_file_open,
-	.mmap			= udf_file_mmap,
+	.mmap_prepare		= udf_file_mmap_prepare,
 	.write_iter		= udf_file_write_iter,
 	.release		= udf_release_file,
 	.fsync			= simple_fsync,

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 07/14] selinuxfs: convert mmap hooks to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (5 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 06/14] udf: convert " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 08/14] xen: convert xenstore interface " Lorenzo Stoakes (ARM)
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook for the
policy and status files.

The policy file only sets VMA flags and operations. The status file remaps
a single page, so use the PFN remap mmap action to do so.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 security/selinux/selinuxfs.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 310e19efff1d..e78c65685020 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -236,27 +236,25 @@ static ssize_t sel_read_handle_status(struct file *filp, char __user *buf,
 				       sizeof(struct selinux_kernel_status));
 }
 
-static int sel_mmap_handle_status(struct file *filp,
-				  struct vm_area_struct *vma)
+static int sel_mmap_prepare_handle_status(struct vm_area_desc *desc)
 {
-	struct page    *status = filp->private_data;
-	unsigned long	size = vma->vm_end - vma->vm_start;
+	struct page    *status = desc->file->private_data;
 
 	BUG_ON(!status);
 
 	/* only allows one page from the head */
-	if (vma->vm_pgoff > 0 || size != PAGE_SIZE)
+	if (desc->pgoff > 0 || vma_desc_size(desc) != PAGE_SIZE)
 		return -EIO;
 
-	return remap_pfn_range(vma, vma->vm_start,
-			       page_to_pfn(status),
-			       size, vma->vm_page_prot);
+	mmap_action_remap_full(desc, page_to_pfn(status));
+
+	return 0;
 }
 
 static const struct file_operations sel_handle_status_ops = {
 	.open		= sel_open_handle_status,
 	.read		= sel_read_handle_status,
-	.mmap		= sel_mmap_handle_status,
+	.mmap_prepare	= sel_mmap_prepare_handle_status,
 	.llseek		= generic_file_llseek,
 };
 
@@ -419,10 +417,10 @@ static const struct vm_operations_struct sel_mmap_policy_ops = {
 	.page_mkwrite = sel_mmap_policy_fault,
 };
 
-static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
+static int sel_mmap_prepare_policy(struct vm_area_desc *desc)
 {
-	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &sel_mmap_policy_ops;
+	vma_desc_set_flags(desc, VMA_DONTEXPAND_BIT, VMA_DONTDUMP_BIT);
+	desc->vm_ops = &sel_mmap_policy_ops;
 
 	return 0;
 }
@@ -430,7 +428,7 @@ static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
 static const struct file_operations sel_policy_ops = {
 	.open		= sel_open_policy,
 	.read		= sel_read_policy,
-	.mmap		= sel_mmap_policy,
+	.mmap_prepare	= sel_mmap_prepare_policy,
 	.release	= sel_release_policy,
 	.llseek		= generic_file_llseek,
 };

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 08/14] xen: convert xenstore interface mmap hooks to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (6 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 07/14] selinuxfs: convert mmap hooks " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 09/14] soc: aspeed: convert LPC and P2A control " Lorenzo Stoakes (ARM)
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook for the
xenfs xsd_kva file and the xenbus_backend device, both of which remap the
xenstore interface page.

Use the PFN remap mmap action to do so, retaining the -EAGAIN error on
failure via the action error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++--------
 drivers/xen/xenfs/xenstored.c           | 14 ++++++--------
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/xen/xenbus/xenbus_dev_backend.c b/drivers/xen/xenbus/xenbus_dev_backend.c
index edba5fecde4d..3e4cb267f411 100644
--- a/drivers/xen/xenbus/xenbus_dev_backend.c
+++ b/drivers/xen/xenbus/xenbus_dev_backend.c
@@ -89,27 +89,25 @@ static long xenbus_backend_ioctl(struct file *file, unsigned int cmd,
 	}
 }
 
-static int xenbus_backend_mmap(struct file *file, struct vm_area_struct *vma)
+static int xenbus_backend_mmap_prepare(struct vm_area_desc *desc)
 {
-	size_t size = vma->vm_end - vma->vm_start;
+	size_t size = vma_desc_size(desc);
 
 	if (!capable(CAP_SYS_ADMIN))
 		return -EPERM;
 
-	if ((size > PAGE_SIZE) || (vma->vm_pgoff != 0))
+	if ((size > PAGE_SIZE) || (desc->pgoff != 0))
 		return -EINVAL;
 
-	if (remap_pfn_range(vma, vma->vm_start,
-			    virt_to_pfn(xen_store_interface),
-			    size, vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc, virt_to_pfn(xen_store_interface));
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
 
 static const struct file_operations xenbus_backend_fops = {
 	.open = xenbus_backend_open,
-	.mmap = xenbus_backend_mmap,
+	.mmap_prepare = xenbus_backend_mmap_prepare,
 	.unlocked_ioctl = xenbus_backend_ioctl,
 };
 
diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c
index f59235f9f8a2..0cf57c286adb 100644
--- a/drivers/xen/xenfs/xenstored.c
+++ b/drivers/xen/xenfs/xenstored.c
@@ -31,24 +31,22 @@ static int xsd_kva_open(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int xsd_kva_mmap(struct file *file, struct vm_area_struct *vma)
+static int xsd_kva_mmap_prepare(struct vm_area_desc *desc)
 {
-	size_t size = vma->vm_end - vma->vm_start;
+	size_t size = vma_desc_size(desc);
 
-	if ((size > PAGE_SIZE) || (vma->vm_pgoff != 0))
+	if ((size > PAGE_SIZE) || (desc->pgoff != 0))
 		return -EINVAL;
 
-	if (remap_pfn_range(vma, vma->vm_start,
-			    virt_to_pfn(xen_store_interface),
-			    size, vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc, virt_to_pfn(xen_store_interface));
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
 
 const struct file_operations xsd_kva_file_ops = {
 	.open = xsd_kva_open,
-	.mmap = xsd_kva_mmap,
+	.mmap_prepare = xsd_kva_mmap_prepare,
 	.read = xsd_read,
 	.release = xsd_release,
 };

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 09/14] soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (7 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 08/14] xen: convert xenstore interface " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook " Lorenzo Stoakes (ARM)
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook for both
the LPC control and P2A control drivers.

Both remap a range of their reserved memory region, so use the PFN remap
mmap action to do so, retaining the -EAGAIN error on failure via the action
error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/soc/aspeed/aspeed-lpc-ctrl.c | 20 +++++++++-----------
 drivers/soc/aspeed/aspeed-p2a-ctrl.c | 22 ++++++++--------------
 2 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index 4d8574cac703..9258762354cc 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -47,22 +47,20 @@ static struct aspeed_lpc_ctrl *file_aspeed_lpc_ctrl(struct file *file)
 			miscdev);
 }
 
-static int aspeed_lpc_ctrl_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_lpc_ctrl_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(file);
-	unsigned long vsize = vma->vm_end - vma->vm_start;
-	pgprot_t prot = vma->vm_page_prot;
+	struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(desc->file);
 
-	if (vma->vm_pgoff + vma_pages(vma) > lpc_ctrl->mem_size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) >
+	    lpc_ctrl->mem_size >> PAGE_SHIFT)
 		return -EINVAL;
 
 	/* ast2400/2500 AHB accesses are not cache coherent */
-	prot = pgprot_noncached(prot);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
 
-	if (remap_pfn_range(vma, vma->vm_start,
-		(lpc_ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-		vsize, prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc,
+		(lpc_ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -216,7 +214,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
 
 static const struct file_operations aspeed_lpc_ctrl_fops = {
 	.owner		= THIS_MODULE,
-	.mmap		= aspeed_lpc_ctrl_mmap,
+	.mmap_prepare	= aspeed_lpc_ctrl_mmap_prepare,
 	.unlocked_ioctl	= aspeed_lpc_ctrl_ioctl,
 };
 
diff --git a/drivers/soc/aspeed/aspeed-p2a-ctrl.c b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
index b6b7b80f842a..ad59ff28c013 100644
--- a/drivers/soc/aspeed/aspeed-p2a-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
@@ -97,29 +97,23 @@ static void aspeed_p2a_disable_bridge(struct aspeed_p2a_ctrl *p2a_ctrl)
 	regmap_update_bits(p2a_ctrl->regmap, SCU180, SCU180_ENP2A, 0);
 }
 
-static int aspeed_p2a_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_p2a_mmap_prepare(struct vm_area_desc *desc)
 {
-	unsigned long vsize;
-	pgprot_t prot;
-	struct aspeed_p2a_user *priv = file->private_data;
+	struct aspeed_p2a_user *priv = desc->file->private_data;
 	struct aspeed_p2a_ctrl *ctrl = priv->parent;
 
 	if (ctrl->mem_base == 0 && ctrl->mem_size == 0)
 		return -EINVAL;
 
-	vsize = vma->vm_end - vma->vm_start;
-	prot = vma->vm_page_prot;
-
-	if (vma->vm_pgoff + vma_pages(vma) > ctrl->mem_size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) > ctrl->mem_size >> PAGE_SHIFT)
 		return -EINVAL;
 
 	/* ast2400/2500 AHB accesses are not cache coherent */
-	prot = pgprot_noncached(prot);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
 
-	if (remap_pfn_range(vma, vma->vm_start,
-		(ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-		vsize, prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc,
+		(ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -308,7 +302,7 @@ static int aspeed_p2a_release(struct inode *inode, struct file *file)
 
 static const struct file_operations aspeed_p2a_ctrl_fops = {
 	.owner = THIS_MODULE,
-	.mmap = aspeed_p2a_mmap,
+	.mmap_prepare = aspeed_p2a_mmap_prepare,
 	.unlocked_ioctl = aspeed_p2a_ioctl,
 	.open = aspeed_p2a_open,
 	.release = aspeed_p2a_release,

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (8 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 09/14] soc: aspeed: convert LPC and P2A control " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 11/14] tee: convert shm " Lorenzo Stoakes (ARM)
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
PFN remap mmap action to map the region.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/soc/qcom/rmtfs_mem.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c
index 342c0845134e..5e2ac75f41d5 100644
--- a/drivers/soc/qcom/rmtfs_mem.c
+++ b/drivers/soc/qcom/rmtfs_mem.c
@@ -129,24 +129,22 @@ static const struct class rmtfs_class = {
 	.name           = "rmtfs",
 };
 
-static int qcom_rmtfs_mem_mmap(struct file *filep, struct vm_area_struct *vma)
+static int qcom_rmtfs_mem_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct qcom_rmtfs_mem *rmtfs_mem = filep->private_data;
+	struct qcom_rmtfs_mem *rmtfs_mem = desc->file->private_data;
 
-	if (vma->vm_end - vma->vm_start > rmtfs_mem->size) {
+	if (vma_desc_size(desc) > rmtfs_mem->size) {
 		dev_dbg(&rmtfs_mem->dev,
 			"vm_end[%lu] - vm_start[%lu] [%lu] > mem->size[%pa]\n",
-			vma->vm_end, vma->vm_start,
-			(vma->vm_end - vma->vm_start), &rmtfs_mem->size);
+			desc->end, desc->start, vma_desc_size(desc),
+			&rmtfs_mem->size);
 		return -EINVAL;
 	}
 
-	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
-	return remap_pfn_range(vma,
-			       vma->vm_start,
-			       rmtfs_mem->addr >> PAGE_SHIFT,
-			       vma->vm_end - vma->vm_start,
-			       vma->vm_page_prot);
+	desc->page_prot = pgprot_writecombine(desc->page_prot);
+	mmap_action_remap_full(desc, rmtfs_mem->addr >> PAGE_SHIFT);
+
+	return 0;
 }
 
 static const struct file_operations qcom_rmtfs_mem_fops = {
@@ -156,7 +154,7 @@ static const struct file_operations qcom_rmtfs_mem_fops = {
 	.write = qcom_rmtfs_mem_write,
 	.release = qcom_rmtfs_mem_release,
 	.llseek = default_llseek,
-	.mmap = qcom_rmtfs_mem_mmap,
+	.mmap_prepare = qcom_rmtfs_mem_mmap_prepare,
 };
 
 static void qcom_rmtfs_mem_release_device(struct device *dev)

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 11/14] tee: convert shm mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (9 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 12/14] misc: bcm-vk: convert " Lorenzo Stoakes (ARM)
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
PFN remap mmap action to map the shared memory.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/tee/tee_shm.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c
index daa4af1e089e..8fcbf0232aeb 100644
--- a/drivers/tee/tee_shm.c
+++ b/drivers/tee/tee_shm.c
@@ -567,10 +567,9 @@ static int tee_shm_fop_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int tee_shm_fop_mmap(struct file *filp, struct vm_area_struct *vma)
+static int tee_shm_fop_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct tee_shm *shm = filp->private_data;
-	size_t size = vma->vm_end - vma->vm_start;
+	struct tee_shm *shm = desc->file->private_data;
 
 	/* Refuse sharing shared memory provided by application */
 	if (shm->flags & TEE_SHM_USER_MAPPED)
@@ -580,17 +579,18 @@ static int tee_shm_fop_mmap(struct file *filp, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	/* check for overflowing the buffer's size */
-	if (vma->vm_pgoff + vma_pages(vma) > shm->size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) > shm->size >> PAGE_SHIFT)
 		return -EINVAL;
 
-	return remap_pfn_range(vma, vma->vm_start, shm->paddr >> PAGE_SHIFT,
-			       size, vma->vm_page_prot);
+	mmap_action_remap_full(desc, shm->paddr >> PAGE_SHIFT);
+
+	return 0;
 }
 
 static const struct file_operations tee_shm_fops = {
 	.owner = THIS_MODULE,
 	.release = tee_shm_fop_release,
-	.mmap = tee_shm_fop_mmap,
+	.mmap_prepare = tee_shm_fop_mmap_prepare,
 };
 
 /**

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 12/14] misc: bcm-vk: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (10 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 11/14] tee: convert shm " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 13/14] ptp: vmclock: " Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 14/14] vhost-vdpa: " Lorenzo Stoakes (ARM)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
I/O PFN remap mmap action to map the BAR.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/misc/bcm-vk/bcm_vk_dev.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c
index 88ee3a417616..25a2b46ebad9 100644
--- a/drivers/misc/bcm-vk/bcm_vk_dev.c
+++ b/drivers/misc/bcm-vk/bcm_vk_dev.c
@@ -1201,9 +1201,9 @@ static long bcm_vk_reset(struct bcm_vk *vk, struct vk_reset __user *arg)
 	return ret;
 }
 
-static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma)
+static int bcm_vk_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct bcm_vk_ctx *ctx = file->private_data;
+	struct bcm_vk_ctx *ctx = desc->file->private_data;
 	struct bcm_vk *vk = container_of(ctx->miscdev, struct bcm_vk, miscdev);
 	unsigned long pg_size;
 
@@ -1212,16 +1212,16 @@ static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma)
 
 	pg_size = ((pci_resource_len(vk->pdev, VK_MMAPABLE_BAR) - 1)
 		    >> PAGE_SHIFT) + 1;
-	if (vma->vm_pgoff + vma_pages(vma) > pg_size)
+	if (desc->pgoff + vma_desc_pages(desc) > pg_size)
 		return -EINVAL;
 
-	vma->vm_pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR)
-			  >> PAGE_SHIFT);
-	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+	desc->pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR)
+			>> PAGE_SHIFT);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
+
+	mmap_action_ioremap_full(desc, desc->pgoff);
 
-	return io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
-				  vma->vm_end - vma->vm_start,
-				  vma->vm_page_prot);
+	return 0;
 }
 
 static long bcm_vk_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
@@ -1262,7 +1262,7 @@ static const struct file_operations bcm_vk_fops = {
 	.write = bcm_vk_write,
 	.poll = bcm_vk_poll,
 	.release = bcm_vk_release,
-	.mmap = bcm_vk_mmap,
+	.mmap_prepare = bcm_vk_mmap_prepare,
 	.unlocked_ioctl = bcm_vk_ioctl,
 };
 

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 13/14] ptp: vmclock: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (11 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 12/14] misc: bcm-vk: convert " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  2026-11-05 21:05 ` [PATCH 14/14] vhost-vdpa: " Lorenzo Stoakes (ARM)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
I/O PFN remap mmap action to map the clock page and retaining the -EAGAIN
error on failure via the action error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/ptp/ptp_vmclock.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/ptp/ptp_vmclock.c b/drivers/ptp/ptp_vmclock.c
index bb0e14bac9f2..e44433430044 100644
--- a/drivers/ptp/ptp_vmclock.c
+++ b/drivers/ptp/ptp_vmclock.c
@@ -364,27 +364,26 @@ struct vmclock_file_state {
 	atomic_t seq;
 };
 
-static int vmclock_miscdev_mmap(struct file *fp, struct vm_area_struct *vma)
+static int vmclock_miscdev_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vmclock_file_state *fst = fp->private_data;
+	struct vmclock_file_state *fst = desc->file->private_data;
 	struct vmclock_state *st = fst->st;
 
-	if ((vma->vm_flags & (VM_READ|VM_WRITE)) != VM_READ)
+	if (!vma_desc_test(desc, VMA_READ_BIT) ||
+	    vma_desc_test(desc, VMA_WRITE_BIT))
 		return -EROFS;
 
 	/*
 	 * Restrict the read-only mapping so it cannot be upgraded to
 	 * writable later with mprotect().
 	 */
-	vm_flags_clear(vma, VM_MAYWRITE);
+	vma_desc_clear_flags(desc, VMA_MAYWRITE_BIT);
 
-	if (vma->vm_end - vma->vm_start != PAGE_SIZE || vma->vm_pgoff)
+	if (vma_desc_size(desc) != PAGE_SIZE || desc->pgoff)
 		return -EINVAL;
 
-	if (io_remap_pfn_range(vma, vma->vm_start,
-			       st->res.start >> PAGE_SHIFT, PAGE_SIZE,
-			       vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_ioremap_full(desc, st->res.start >> PAGE_SHIFT);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -484,7 +483,7 @@ static const struct file_operations vmclock_miscdev_fops = {
 	.owner = THIS_MODULE,
 	.open = vmclock_miscdev_open,
 	.release = vmclock_miscdev_release,
-	.mmap = vmclock_miscdev_mmap,
+	.mmap_prepare = vmclock_miscdev_mmap_prepare,
 	.read = vmclock_miscdev_read,
 	.poll = vmclock_miscdev_poll,
 };

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 14/14] vhost-vdpa: convert mmap hook to mmap_prepare
  2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
                   ` (12 preceding siblings ...)
  2026-11-05 21:05 ` [PATCH 13/14] ptp: vmclock: " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:05 ` Lorenzo Stoakes (ARM)
  13 siblings, 0 replies; 16+ messages in thread
From: Lorenzo Stoakes (ARM) @ 2026-11-05 21:05 UTC (permalink / raw)
  To: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Jarkko Sakkinen, Dave Hansen, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, x86, H. Peter Anvin, Jan Kara, Paul Moore,
	Stephen Smalley, Ondrej Mosnáček, Joel Stanley,
	Andrew Jeffery, Ryan Chen, Billy Tsai, Bjorn Andersson,
	Konrad Dybcio, Abel Vesa, Jens Wiklander, Sumit Garg,
	Scott Branden, Broadcom internal kernel review list,
	Arnd Bergmann, Greg Kroah-Hartman, Richard Cochran,
	David Woodhouse, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: ljs, xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only validates the request and sets the VMA flags, operations and page
protection.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/vhost/vdpa.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index ff7d90719171..993b2d7c8927 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -1573,19 +1573,19 @@ static const struct vm_operations_struct vhost_vdpa_vm_ops = {
 	.fault = vhost_vdpa_fault,
 };
 
-static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
+static int vhost_vdpa_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vhost_vdpa *v = vma->vm_file->private_data;
+	struct vhost_vdpa *v = desc->file->private_data;
 	struct vdpa_device *vdpa = v->vdpa;
 	const struct vdpa_config_ops *ops = vdpa->config;
 	struct vdpa_notification_area notify;
-	unsigned long index = vma->vm_pgoff;
+	unsigned long index = desc->pgoff;
 
-	if (vma->vm_end - vma->vm_start != PAGE_SIZE)
+	if (vma_desc_size(desc) != PAGE_SIZE)
 		return -EINVAL;
-	if ((vma->vm_flags & VM_SHARED) == 0)
+	if (!vma_desc_test(desc, VMA_SHARED_BIT))
 		return -EINVAL;
-	if (vma->vm_flags & VM_READ)
+	if (vma_desc_test(desc, VMA_READ_BIT))
 		return -EINVAL;
 	if (!ops->get_vq_notification)
 		return -ENOTSUPP;
@@ -1598,12 +1598,13 @@ static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
 		return -EINVAL;
 	if (notify.addr & (PAGE_SIZE - 1))
 		return -EINVAL;
-	if (vma->vm_end - vma->vm_start != notify.size)
+	if (vma_desc_size(desc) != notify.size)
 		return -ENOTSUPP;
 
-	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &vhost_vdpa_vm_ops;
+	desc->page_prot = pgprot_noncached(desc->page_prot);
+	vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTEXPAND_BIT,
+			   VMA_DONTDUMP_BIT);
+	desc->vm_ops = &vhost_vdpa_vm_ops;
 	return 0;
 }
 #endif /* CONFIG_MMU */
@@ -1615,7 +1616,7 @@ static const struct file_operations vhost_vdpa_fops = {
 	.write_iter	= vhost_vdpa_chr_write_iter,
 	.unlocked_ioctl	= vhost_vdpa_unlocked_ioctl,
 #ifdef CONFIG_MMU
-	.mmap		= vhost_vdpa_mmap,
+	.mmap_prepare	= vhost_vdpa_mmap_prepare,
 #endif /* CONFIG_MMU */
 	.compat_ioctl	= compat_ptr_ioctl,
 };

-- 
2.56.0


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 05/14] x86/sgx: convert vepc mmap hook to mmap_prepare
  2026-11-05 21:05 ` [PATCH 05/14] x86/sgx: convert vepc " Lorenzo Stoakes (ARM)
@ 2026-11-05 21:43   ` Jarkko Sakkinen
  0 siblings, 0 replies; 16+ messages in thread
From: Jarkko Sakkinen @ 2026-11-05 21:43 UTC (permalink / raw)
  To: Lorenzo Stoakes (ARM)
  Cc: Juergen Gross, Stefano Stabellini, Oleksandr Tyshchenko,
	Madhavan Srinivasan, Nicholas Piggin, Michael Ellerman,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Haiyang Zhang, Wei Liu, Dexuan Cui,
	Michael S. Tsirkin, Jason Wang, Eugenio Pérez, Xuan Zhuo,
	Dave Hansen, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x86,
	H. Peter Anvin, Jan Kara, Paul Moore, Stephen Smalley,
	Ondrej Mosnáček, Joel Stanley, Andrew Jeffery,
	Ryan Chen, Billy Tsai, Bjorn Andersson, Konrad Dybcio, Abel Vesa,
	Jens Wiklander, Sumit Garg, Scott Branden,
	Broadcom internal kernel review list, Arnd Bergmann,
	Greg Kroah-Hartman, Richard Cochran, David Woodhouse, Andrew Lunn,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	xen-devel, linux-kernel, linuxppc-dev, kvm, linux-hyperv,
	virtualization, linux-sgx, selinux, linux-arm-kernel,
	linux-aspeed, linux-arm-msm, op-tee, netdev

On Thu, Nov 05, 2026 at 09:05:36PM +0000, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
> only checks that the mapping is shared and sets VMA flags, operations and
> private data.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
> index 6a1933ddc6fc..850990519ca5 100644
> --- a/arch/x86/kernel/cpu/sgx/virt.c
> +++ b/arch/x86/kernel/cpu/sgx/virt.c
> @@ -98,17 +98,18 @@ static const struct vm_operations_struct sgx_vepc_vm_ops = {
>  	.fault = sgx_vepc_fault,
>  };
>  
> -static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
> +static int sgx_vepc_mmap_prepare(struct vm_area_desc *desc)
>  {
> -	struct sgx_vepc *vepc = file->private_data;
> +	struct sgx_vepc *vepc = desc->file->private_data;
>  
> -	if (!(vma->vm_flags & VM_SHARED))
> +	if (!vma_desc_test(desc, VMA_SHARED_BIT))
>  		return -EINVAL;
>  
> -	vma->vm_ops = &sgx_vepc_vm_ops;
> +	desc->vm_ops = &sgx_vepc_vm_ops;
>  	/* Don't copy VMA in fork() */
> -	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
> -	vma->vm_private_data = vepc;
> +	vma_desc_set_flags(desc, VMA_PFNMAP_BIT, VMA_IO_BIT, VMA_DONTDUMP_BIT,
> +			   VMA_DONTCOPY_BIT);
> +	desc->private_data = vepc;
>  
>  	return 0;
>  }
> @@ -315,7 +316,7 @@ static const struct file_operations sgx_vepc_fops = {
>  	.unlocked_ioctl	= sgx_vepc_ioctl,
>  	.compat_ioctl	= sgx_vepc_ioctl,
>  	.release	= sgx_vepc_release,
> -	.mmap		= sgx_vepc_mmap,
> +	.mmap_prepare	= sgx_vepc_mmap_prepare,
>  };
>  
>  static struct miscdevice sgx_vepc_dev = {
> 
> -- 
> 2.56.0
> 

Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

Br, Jarkko

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-11-05 21:43 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-05 21:05 [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 01/14] xen/privcmd: convert mmap hook " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 02/14] KVM: PPC: Book3S: convert spapr TCE " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 03/14] mshv_vtl: convert mmap hooks " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 04/14] vduse: convert IOVA domain mmap hook " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 05/14] x86/sgx: convert vepc " Lorenzo Stoakes (ARM)
2026-11-05 21:43   ` Jarkko Sakkinen
2026-11-05 21:05 ` [PATCH 06/14] udf: convert " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 07/14] selinuxfs: convert mmap hooks " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 08/14] xen: convert xenstore interface " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 09/14] soc: aspeed: convert LPC and P2A control " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 11/14] tee: convert shm " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 12/14] misc: bcm-vk: convert " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 13/14] ptp: vmclock: " Lorenzo Stoakes (ARM)
2026-11-05 21:05 ` [PATCH 14/14] vhost-vdpa: " Lorenzo Stoakes (ARM)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox