[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




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.