On Thu, Nov 05, 2026 at 09:05:45PM +0000, Lorenzo Stoakes (ARM) wrote: > Move from the deprecated mmap hook to the new mmap_prepare hook. The hook > only validates the request and sets the VMA flags, operations and page > protection. > > Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]> Who's merging this, me? > --- > drivers/vhost/vdpa.c | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > index ff7d90719171..993b2d7c8927 100644 > --- a/drivers/vhost/vdpa.c > +++ b/drivers/vhost/vdpa.c > @@ -1573,19 +1573,19 @@ static const struct vm_operations_struct > vhost_vdpa_vm_ops = { > .fault = vhost_vdpa_fault, > }; > > -static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma) > +static int vhost_vdpa_mmap_prepare(struct vm_area_desc *desc) > { > - struct vhost_vdpa *v = vma->vm_file->private_data; > + struct vhost_vdpa *v = desc->file->private_data; > struct vdpa_device *vdpa = v->vdpa; > const struct vdpa_config_ops *ops = vdpa->config; > struct vdpa_notification_area notify; > - unsigned long index = vma->vm_pgoff; > + unsigned long index = desc->pgoff; > > - if (vma->vm_end - vma->vm_start != PAGE_SIZE) > + if (vma_desc_size(desc) != PAGE_SIZE) > return -EINVAL; > - if ((vma->vm_flags & VM_SHARED) == 0) > + if (!vma_desc_test(desc, VMA_SHARED_BIT)) > return -EINVAL; > - if (vma->vm_flags & VM_READ) > + if (vma_desc_test(desc, VMA_READ_BIT)) > return -EINVAL; > if (!ops->get_vq_notification) > return -ENOTSUPP; > @@ -1598,12 +1598,13 @@ static int vhost_vdpa_mmap(struct file *file, struct > vm_area_struct *vma) > return -EINVAL; > if (notify.addr & (PAGE_SIZE - 1)) > return -EINVAL; > - if (vma->vm_end - vma->vm_start != notify.size) > + if (vma_desc_size(desc) != notify.size) > return -ENOTSUPP; > > - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); > - vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP); > - vma->vm_ops = &vhost_vdpa_vm_ops; > + desc->page_prot = pgprot_noncached(desc->page_prot); > + vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTEXPAND_BIT, > + VMA_DONTDUMP_BIT); > + desc->vm_ops = &vhost_vdpa_vm_ops; > return 0; > } > #endif /* CONFIG_MMU */ > @@ -1615,7 +1616,7 @@ static const struct file_operations vhost_vdpa_fops = { > .write_iter = vhost_vdpa_chr_write_iter, > .unlocked_ioctl = vhost_vdpa_unlocked_ioctl, > #ifdef CONFIG_MMU > - .mmap = vhost_vdpa_mmap, > + .mmap_prepare = vhost_vdpa_mmap_prepare, > #endif /* CONFIG_MMU */ > .compat_ioctl = compat_ptr_ioctl, > }; > > -- > 2.56.0
