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