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


Reply via email to