media: videobuf2: Don't assert held reservation lock for dma-buf mmapping
authorDmitry Osipenko <dmitry.osipenko@collabora.com>
Mon, 29 May 2023 22:39:30 +0000 (01:39 +0300)
committerDmitry Osipenko <dmitry.osipenko@collabora.com>
Wed, 21 Jun 2023 17:22:20 +0000 (20:22 +0300)
Don't assert held dma-buf reservation lock on memory mapping of exported
buffer.

We're going to change dma-buf mmap() locking policy such that exporters
will have to handle the lock. The previous locking policy caused deadlock
problem for DRM drivers in a case of self-imported dma-bufs once these
drivers are moved to use reservation lock universally. The problem is
solved by moving the lock down to exporters. This patch prepares videobuf2
for the locking policy update.

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230529223935.2672495-2-dmitry.osipenko@collabora.com
drivers/media/common/videobuf2/videobuf2-dma-contig.c
drivers/media/common/videobuf2/videobuf2-dma-sg.c
drivers/media/common/videobuf2/videobuf2-vmalloc.c

index 205d3ca..2fa455d 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include <linux/dma-buf.h>
-#include <linux/dma-resv.h>
 #include <linux/module.h>
 #include <linux/refcount.h>
 #include <linux/scatterlist.h>
@@ -456,8 +455,6 @@ static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct iosys_map *map)
 static int vb2_dc_dmabuf_ops_mmap(struct dma_buf *dbuf,
        struct vm_area_struct *vma)
 {
-       dma_resv_assert_held(dbuf->resv);
-
        return vb2_dc_mmap(dbuf->priv, vma);
 }
 
index 183037f..28f3fdf 100644 (file)
@@ -10,7 +10,6 @@
  * the Free Software Foundation.
  */
 
-#include <linux/dma-resv.h>
 #include <linux/module.h>
 #include <linux/mm.h>
 #include <linux/refcount.h>
@@ -498,8 +497,6 @@ static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf,
 static int vb2_dma_sg_dmabuf_ops_mmap(struct dma_buf *dbuf,
        struct vm_area_struct *vma)
 {
-       dma_resv_assert_held(dbuf->resv);
-
        return vb2_dma_sg_mmap(dbuf->priv, vma);
 }
 
index a6c6d2f..7c635e2 100644 (file)
@@ -10,7 +10,6 @@
  * the Free Software Foundation.
  */
 
-#include <linux/dma-resv.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/mm.h>
@@ -319,8 +318,6 @@ static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf,
 static int vb2_vmalloc_dmabuf_ops_mmap(struct dma_buf *dbuf,
        struct vm_area_struct *vma)
 {
-       dma_resv_assert_held(dbuf->resv);
-
        return vb2_vmalloc_mmap(dbuf->priv, vma);
 }