|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 07/14] selinuxfs: convert mmap hooks to mmap_prepare
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@xxxxxxxxxx>
---
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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |