lkml.org 
[lkml]   [2022]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 18/21] dma-buf: Move dma_buf_mmap() to dynamic locking specification
    Date
    Move dma_buf_mmap() function to the dynamic locking specification by
    taking the reservation lock. Neither of the today's drivers take the
    reservation lock within the mmap() callback, hence it's safe to enforce
    the locking.

    Acked-by: Sumit Semwal <sumit.semwal@linaro.org>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
    ---
    drivers/dma-buf/dma-buf.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
    index bff5a70b8735..2452b4c82584 100644
    --- a/drivers/dma-buf/dma-buf.c
    +++ b/drivers/dma-buf/dma-buf.c
    @@ -1390,6 +1390,8 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_end_cpu_access, DMA_BUF);
    int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
    unsigned long pgoff)
    {
    + int ret;
    +
    if (WARN_ON(!dmabuf || !vma))
    return -EINVAL;

    @@ -1410,7 +1412,11 @@ int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
    vma_set_file(vma, dmabuf->file);
    vma->vm_pgoff = pgoff;

    - return dmabuf->ops->mmap(dmabuf, vma);
    + dma_resv_lock(dmabuf->resv, NULL);
    + ret = dmabuf->ops->mmap(dmabuf, vma);
    + dma_resv_unlock(dmabuf->resv);
    +
    + return ret;
    }
    EXPORT_SYMBOL_NS_GPL(dma_buf_mmap, DMA_BUF);

    --
    2.37.3
    \
     
     \ /
      Last update: 2022-09-28 21:21    [W:4.138 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site