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) <[email protected]> --- 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
