On Wed 10-09-25 21:21:59, Lorenzo Stoakes wrote:
> It is relatively trivial to update this code to use the f_op->mmap_prepare
> hook in favour of the deprecated f_op->mmap hook, so do so.
> 
> Reviewed-by: David Hildenbrand <[email protected]>
> Signed-off-by: Lorenzo Stoakes <[email protected]>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

                                                                Honza

> ---
>  kernel/relay.c | 33 +++++++++++++++++----------------
>  1 file changed, 17 insertions(+), 16 deletions(-)
> 
> diff --git a/kernel/relay.c b/kernel/relay.c
> index 8d915fe98198..e36f6b926f7f 100644
> --- a/kernel/relay.c
> +++ b/kernel/relay.c
> @@ -72,17 +72,18 @@ static void relay_free_page_array(struct page **array)
>  }
>  
>  /**
> - *   relay_mmap_buf: - mmap channel buffer to process address space
> - *   @buf: relay channel buffer
> - *   @vma: vm_area_struct describing memory to be mapped
> + *   relay_mmap_prepare_buf: - mmap channel buffer to process address space
> + *   @buf: the relay channel buffer
> + *   @desc: describing what to map
>   *
>   *   Returns 0 if ok, negative on error
>   *
>   *   Caller should already have grabbed mmap_lock.
>   */
> -static int relay_mmap_buf(struct rchan_buf *buf, struct vm_area_struct *vma)
> +static int relay_mmap_prepare_buf(struct rchan_buf *buf,
> +                               struct vm_area_desc *desc)
>  {
> -     unsigned long length = vma->vm_end - vma->vm_start;
> +     unsigned long length = vma_desc_size(desc);
>  
>       if (!buf)
>               return -EBADF;
> @@ -90,9 +91,9 @@ static int relay_mmap_buf(struct rchan_buf *buf, struct 
> vm_area_struct *vma)
>       if (length != (unsigned long)buf->chan->alloc_size)
>               return -EINVAL;
>  
> -     vma->vm_ops = &relay_file_mmap_ops;
> -     vm_flags_set(vma, VM_DONTEXPAND);
> -     vma->vm_private_data = buf;
> +     desc->vm_ops = &relay_file_mmap_ops;
> +     desc->vm_flags |= VM_DONTEXPAND;
> +     desc->private_data = buf;
>  
>       return 0;
>  }
> @@ -749,16 +750,16 @@ static int relay_file_open(struct inode *inode, struct 
> file *filp)
>  }
>  
>  /**
> - *   relay_file_mmap - mmap file op for relay files
> - *   @filp: the file
> - *   @vma: the vma describing what to map
> + *   relay_file_mmap_prepare - mmap file op for relay files
> + *   @desc: describing what to map
>   *
> - *   Calls upon relay_mmap_buf() to map the file into user space.
> + *   Calls upon relay_mmap_prepare_buf() to map the file into user space.
>   */
> -static int relay_file_mmap(struct file *filp, struct vm_area_struct *vma)
> +static int relay_file_mmap_prepare(struct vm_area_desc *desc)
>  {
> -     struct rchan_buf *buf = filp->private_data;
> -     return relay_mmap_buf(buf, vma);
> +     struct rchan_buf *buf = desc->file->private_data;
> +
> +     return relay_mmap_prepare_buf(buf, desc);
>  }
>  
>  /**
> @@ -1006,7 +1007,7 @@ static ssize_t relay_file_read(struct file *filp,
>  const struct file_operations relay_file_operations = {
>       .open           = relay_file_open,
>       .poll           = relay_file_poll,
> -     .mmap           = relay_file_mmap,
> +     .mmap_prepare   = relay_file_mmap_prepare,
>       .read           = relay_file_read,
>       .release        = relay_file_release,
>  };
> -- 
> 2.51.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to