All drivers that use dma-bufs have been moved to the updated locking
specification and now dma-buf reservation is guaranteed to be locked
by importers during the mapping operations. There is no need to take
the internal dma-buf lock anymore. Remove locking from the videobuf2
memory allocators.
Acked-by: Tomasz Figa <tfiga@chromium.org>
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221017172229.42269-21-dmitry.osipenko@collabora.com
        struct dma_buf_attachment *db_attach, enum dma_data_direction dma_dir)
 {
        struct vb2_dc_attachment *attach = db_attach->priv;
-       /* stealing dmabuf mutex to serialize map/unmap operations */
-       struct mutex *lock = &db_attach->dmabuf->lock;
        struct sg_table *sgt;
 
-       mutex_lock(lock);
-
        sgt = &attach->sgt;
        /* return previously mapped sg table */
-       if (attach->dma_dir == dma_dir) {
-               mutex_unlock(lock);
+       if (attach->dma_dir == dma_dir)
                return sgt;
-       }
 
        /* release any previous cache */
        if (attach->dma_dir != DMA_NONE) {
        if (dma_map_sgtable(db_attach->dev, sgt, dma_dir,
                            DMA_ATTR_SKIP_CPU_SYNC)) {
                pr_err("failed to map scatterlist\n");
-               mutex_unlock(lock);
                return ERR_PTR(-EIO);
        }
 
        attach->dma_dir = dma_dir;
 
-       mutex_unlock(lock);
-
        return sgt;
 }
 
 
        struct dma_buf_attachment *db_attach, enum dma_data_direction dma_dir)
 {
        struct vb2_dma_sg_attachment *attach = db_attach->priv;
-       /* stealing dmabuf mutex to serialize map/unmap operations */
-       struct mutex *lock = &db_attach->dmabuf->lock;
        struct sg_table *sgt;
 
-       mutex_lock(lock);
-
        sgt = &attach->sgt;
        /* return previously mapped sg table */
-       if (attach->dma_dir == dma_dir) {
-               mutex_unlock(lock);
+       if (attach->dma_dir == dma_dir)
                return sgt;
-       }
 
        /* release any previous cache */
        if (attach->dma_dir != DMA_NONE) {
        /* mapping to the client with new direction */
        if (dma_map_sgtable(db_attach->dev, sgt, dma_dir, 0)) {
                pr_err("failed to map scatterlist\n");
-               mutex_unlock(lock);
                return ERR_PTR(-EIO);
        }
 
        attach->dma_dir = dma_dir;
 
-       mutex_unlock(lock);
-
        return sgt;
 }
 
 
        struct dma_buf_attachment *db_attach, enum dma_data_direction dma_dir)
 {
        struct vb2_vmalloc_attachment *attach = db_attach->priv;
-       /* stealing dmabuf mutex to serialize map/unmap operations */
-       struct mutex *lock = &db_attach->dmabuf->lock;
        struct sg_table *sgt;
 
-       mutex_lock(lock);
-
        sgt = &attach->sgt;
        /* return previously mapped sg table */
-       if (attach->dma_dir == dma_dir) {
-               mutex_unlock(lock);
+       if (attach->dma_dir == dma_dir)
                return sgt;
-       }
 
        /* release any previous cache */
        if (attach->dma_dir != DMA_NONE) {
        /* mapping to the client with new direction */
        if (dma_map_sgtable(db_attach->dev, sgt, dma_dir, 0)) {
                pr_err("failed to map scatterlist\n");
-               mutex_unlock(lock);
                return ERR_PTR(-EIO);
        }
 
        attach->dma_dir = dma_dir;
 
-       mutex_unlock(lock);
-
        return sgt;
 }