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