]> xenbits.xensource.com Git - people/pauldu/linux.git/commitdiff
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 205d3cac425cf4090a6c4daf3fe7655ff6a0b719..2fa455d4a0480e95fd8c42b3e00db321370d396b 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 183037fb12732d97d353080bde65d3ab7b478b81..28f3fdfe23a2987e7ad76c290542fb3b2e657451 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 a6c6d2fcaaa4604a4ea484f4edb0b3341f4e1891..7c635e29210623a6b7f57bc87b0bcc97f8f8b6ac 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);
 }