On 5/21/26 18:29, Lizhi Hou wrote:
> This reverts commit f649e63d4a6423eda8eb208638849fd6396aedd7.
> 
> The read-only feature requires further consideration.
> 
> Signed-off-by: Lizhi Hou <[email protected]>

Acked-by: Christian König <[email protected]>

> ---
>  drivers/accel/amdxdna/amdxdna_ubuf.c | 29 ++--------------------------
>  1 file changed, 2 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/accel/amdxdna/amdxdna_ubuf.c 
> b/drivers/accel/amdxdna/amdxdna_ubuf.c
> index 3769210c55cc..4c0647057759 100644
> --- a/drivers/accel/amdxdna/amdxdna_ubuf.c
> +++ b/drivers/accel/amdxdna/amdxdna_ubuf.c
> @@ -125,26 +125,6 @@ static const struct dma_buf_ops amdxdna_ubuf_dmabuf_ops 
> = {
>       .vunmap = amdxdna_ubuf_vunmap,
>  };
>  
> -static int readonly_va_entry(struct amdxdna_drm_va_entry *va_ent)
> -{
> -     struct mm_struct *mm = current->mm;
> -     struct vm_area_struct *vma;
> -     int ret;
> -
> -     mmap_read_lock(mm);
> -
> -     vma = find_vma(mm, va_ent->vaddr);
> -     if (!vma ||
> -         vma->vm_start > va_ent->vaddr ||
> -         vma->vm_end - va_ent->vaddr < va_ent->len)
> -             ret = -ENOENT;
> -     else
> -             ret = vma->vm_flags & VM_WRITE ? 0 : 1;
> -
> -     mmap_read_unlock(mm);
> -     return ret;
> -}
> -
>  struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
>                                u32 num_entries, void __user *va_entries)
>  {
> @@ -154,7 +134,6 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
>       struct amdxdna_ubuf_priv *ubuf;
>       u32 npages, start = 0;
>       struct dma_buf *dbuf;
> -     bool readonly = true;
>       int i, ret;
>       DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
>  
> @@ -193,10 +172,6 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
>                       ret = -EINVAL;
>                       goto free_ent;
>               }
> -
> -             /* Pin pages as writable as long as not all entries are 
> read-only. */
> -             if (readonly && readonly_va_entry(&va_ent[i]) != 1)
> -                     readonly = false;
>       }
>  
>       ubuf->nr_pages = exp_info.size >> PAGE_SHIFT;
> @@ -219,7 +194,7 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
>               npages = va_ent[i].len >> PAGE_SHIFT;
>  
>               ret = pin_user_pages_fast(va_ent[i].vaddr, npages,
> -                                       (readonly ? 0 : FOLL_WRITE) | 
> FOLL_LONGTERM,
> +                                       FOLL_WRITE | FOLL_LONGTERM,
>                                         &ubuf->pages[start]);
>               if (ret >= 0) {
>                       start += ret;
> @@ -236,7 +211,7 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
>  
>       exp_info.ops = &amdxdna_ubuf_dmabuf_ops;
>       exp_info.priv = ubuf;
> -     exp_info.flags = (readonly ? O_RDONLY : O_RDWR) | O_CLOEXEC;
> +     exp_info.flags = O_RDWR | O_CLOEXEC;
>  
>       dbuf = dma_buf_export(&exp_info);
>       if (IS_ERR(dbuf)) {

Reply via email to