mm: convert further simple mmap hooks to mmap_prepare
Subsystems (22)
cover mm: convert further simple mmap hooks to mmap_prepare
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!
---
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,
Signature · 1 line
Lorenzo Stoakes (ARM) <[email protected]>
PATCH 1/14 xen/privcmd: convert mmap hook to mmap_prepare
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.
--- drivers/xen/privcmd.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
drivers/xen/privcmd.c +5 -6
@@ -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);
Signature · 1 line
2.56.0
PATCH 2/14 KVM: PPC: Book3S: convert spapr TCE mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook. The hook only sets the VMA operations.
--- arch/powerpc/kvm/book3s_64_vio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/powerpc/kvm/book3s_64_vio.c +3 -3
@@ -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, };
Signature · 1 line
2.56.0
PATCH 3/14 mshv_vtl: convert mmap hooks to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- drivers/hv/mshv_vtl_main.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/hv/mshv_vtl_main.c +7 -7
@@ -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 = {
Signature · 1 line
2.56.0
PATCH 4/14 vduse: convert IOVA domain mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook. The hook only sets VMA flags, operations and private data.
--- drivers/vdpa/vdpa_user/iova_domain.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/vdpa/vdpa_user/iova_domain.c +6 -6
@@ -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, };
Signature · 1 line
2.56.0
PATCH 5/14 x86/sgx: convert vepc mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
arch/x86/kernel/cpu/sgx/virt.c +8 -7
@@ -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 = {
Signature · 1 line
2.56.0
Re: [PATCH 05/14] x86/sgx: convert vepc mmap hook to mmap_prepare
Quoted 51 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook. The hook only checks that the mapping is shared and sets VMA flags, operations and private data.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>--- arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)arch/x86/kernel/cpu/sgx/virt.c +8
-7@@ -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 = {Signature · 2 lines
-- 2.56.0
Br, Jarkko
PATCH 6/14 udf: convert mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook. The hook only updates the access time and sets the VMA operations.
--- fs/udf/file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
fs/udf/file.c +4 -4
@@ -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,
Signature · 1 line
2.56.0
Re: [PATCH 06/14] udf: convert mmap hook to mmap_prepare
Quoted 4 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook. The hook only updates the access time and sets the VMA operations.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>
Looks good. Feel free to add:
I'll leave it for MM guys to merge this.
Honza
Quoted 35 lines
--- fs/udf/file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)fs/udf/file.c +4
-4@@ -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,Signature · 2 lines
-- 2.56.0
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR
PATCH 7/14 selinuxfs: convert mmap hooks to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- security/selinux/selinuxfs.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-)
security/selinux/selinuxfs.c +11 -13
@@ -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, };
Signature · 1 line
2.56.0
Re: [PATCH 07/14] selinuxfs: convert mmap hooks to mmap_prepare
Quoted 11 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook 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) <[email protected]>--- security/selinux/selinuxfs.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-)
See my comment in the cover letter. I'd prefer to take this via the SELinux tree so it can be included in all of our SELinux testing for v7.5, but if this has to go through a single tree with the rest of the changes, here is my ACK.
Signature · 1 line
paul-moore.com
PATCH 8/14 xen: convert xenstore interface mmap hooks to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++-------- drivers/xen/xenfs/xenstored.c | 14 ++++++-------- 2 files changed, 12 insertions(+), 16 deletions(-)
drivers/xen/xenbus/xenbus_dev_backend.c +6 -8
@@ -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, };
drivers/xen/xenfs/xenstored.c +6 -8
@@ -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, };
Signature · 1 line
2.56.0
PATCH 9/14 soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- drivers/soc/aspeed/aspeed-lpc-ctrl.c | 20 +++++++++----------- drivers/soc/aspeed/aspeed-p2a-ctrl.c | 22 ++++++++-------------- 2 files changed, 17 insertions(+), 25 deletions(-)
drivers/soc/aspeed/aspeed-lpc-ctrl.c +9 -11
@@ -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, };
drivers/soc/aspeed/aspeed-p2a-ctrl.c +8 -14
@@ -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,
Signature · 1 line
2.56.0
Re: [PATCH 09/14] soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
Quoted 8 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook 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
-EAGAINerror on failure via the action error override.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>
PATCH 10/14 soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook, using the PFN remap mmap action to map the region.
--- drivers/soc/qcom/rmtfs_mem.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
drivers/soc/qcom/rmtfs_mem.c +10 -12
@@ -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)
Signature · 1 line
2.56.0
Re: [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
Quoted 4 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook, using the PFN remap mmap action to map the region.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>
LGTM, so:
PATCH 11/14 tee: convert shm mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook, using the PFN remap mmap action to map the shared memory.
--- drivers/tee/tee_shm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/tee/tee_shm.c +7 -7
@@ -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, };/**
Signature · 1 line
2.56.0
PATCH 12/14 misc: bcm-vk: convert mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)Move from the deprecated mmap hook to the new mmap_prepare hook, using the I/O PFN remap mmap action to map the BAR.
--- drivers/misc/bcm-vk/bcm_vk_dev.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/misc/bcm-vk/bcm_vk_dev.c +10 -10
@@ -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, };
Signature · 1 line
2.56.0
PATCH 13/14 ptp: vmclock: convert mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- drivers/ptp/ptp_vmclock.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
drivers/ptp/ptp_vmclock.c +9 -10
@@ -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, };
Signature · 1 line
2.56.0
Re: [PATCH 13/14] ptp: vmclock: convert mmap hook to mmap_prepare
Quoted 5 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook, using the I/O PFN remap mmap action to map the clock page and retaining the-EAGAINerror on failure via the action error override.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>
PATCH 14/14 vhost-vdpa: convert mmap hook to mmap_prepare
In reply to Lorenzo Stoakes (ARM)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.
--- drivers/vhost/vdpa.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
drivers/vhost/vdpa.c +12 -11
@@ -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, };
Signature · 1 line
2.56.0
Re: [PATCH 14/14] vhost-vdpa: convert mmap hook to mmap_prepare
Quoted 5 lines · Lorenzo Stoakes (ARM)
Move from the deprecated mmap hook to the new
mmap_preparehook. The hook only validates the request and sets the VMA flags, operations and page protection.Signed-off-by Lorenzo Stoakes (ARM) <[email protected]>
Who's merging this, me?
Quoted 64 lines
--- drivers/vhost/vdpa.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)drivers/vhost/vdpa.c +12
-11@@ -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, };Signature · 2 lines
-- 2.56.0
Paul Moore
maintainerQuoted 7 lines · Lorenzo Stoakes (ARM)
Continue the conversion of users of the deprecated
f_op->mmapcallback tof_op->mmap_prepare. Keep things gentle this cycle by targeting simple cases.No functional change intended.
Quoted 8 lines
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.
Granted I've only properly looked at the SELinux patch (7/14), the rest I've just skimmed through, but these are all independent patches, right? Is there any reason why individual subsystem maintainers shouldn't just pick up their associated patch? Yes, perhaps chasing down individual maintainers is a bit more work, but isn't that the way this should work?
Quoted 33 lines
Lorenzo Stoakes (ARM) (14):
xen/privcmd: convert mmap hook tommap_prepare
KVM: PPC: Book3S: convert spapr TCE mmap hook tommap_prepare
mshv_vtl: convert mmap hooks tommap_prepare
vduse: convert IOVA domain mmap hook tommap_preparex86/sgx: convert vepc mmap hook tommap_prepare
udf: convert mmap hook tommap_prepare
selinuxfs: convert mmap hooks tommap_prepare
xen: convert xenstore interface mmap hooks tommap_prepare
soc: aspeed: convert LPC and P2A control mmap hooks tommap_prepare
soc: qcom:rmtfs_mem: convert mmap hook tommap_prepare
tee: convert shm mmap hook tommap_prepare
misc: bcm-vk: convert mmap hook tommap_prepare
ptp: vmclock: convert mmap hook tommap_prepare
vhost-vdpa: convert mmap hook tommap_preparearch/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(-)
Signature · 1 line
paul-moore.com
Quoted 17 lines · Paul Moore
Quoted 7 lines · Lorenzo Stoakes (ARM)
Continue the conversion of users of the deprecated
f_op->mmapcallback tof_op->mmap_prepare. Keep things gentle this cycle by targeting simple cases.No functional change intended.
Quoted 8 lines
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.
Quoted 6 lines
Granted I've only properly looked at the SELinux patch (7/14), the rest I've just skimmed through, but these are all independent patches, right? Is there any reason why individual subsystem maintainers shouldn't just pick up their associated patch? Yes, perhaps chasing down individual maintainers is a bit more work, but isn't that the way this should work?
I've no objection to people taking patches independently, the concern is people lagging on that and holding up a key conversion which is entirely mechanical, + generally tree-wide stuff like this has been via the mm tree.
The mmap_prepare stuff is actually important for security (pertinent given current AI fix storm) as it's by design super locked down vs. mmap which has caused several genuine issues including a nasty 0-day.
So am keen to keep that rolling!
In this case each patch is mechanical and simple, so little surface area for issues.
--
Cheers, Lorenzo
Jarkko Sakkinen
maintainerQuoted 10 lines · Lorenzo Stoakes (ARM)
Quoted 6 lines
Granted I've only properly looked at the SELinux patch (7/14), the rest I've just skimmed through, but these are all independent patches, right? Is there any reason why individual subsystem maintainers shouldn't just pick up their associated patch? Yes, perhaps chasing down individual maintainers is a bit more work, but isn't that the way this should work?
I've no objection to people taking patches independently, the concern is people lagging on that and holding up a key conversion which is entirely mechanical, + generally tree-wide stuff like this has been via the mm tree.
This is probably the best way forward, as for a subsystem this is just a different API for doing the exact same thing (and that way "idempotent").
And looking at the intersection points overall, the changes are neither likely to cause any major merge conflicts...
Br, Jarkko