summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYunke Cao <yunkec@chromium.org>2024-08-14 11:06:42 +0900
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2024-08-14 10:05:32 +0200
commit1da4e16130d36c712e00bf045f09f194aac964b8 (patch)
tree0b4f2cd73c461ebb2ff7298a9e01805021c044ce
parent95af7c00f35b9cb0873afb8f191f42e04714ed2a (diff)
downloadlinux-1da4e16130d36c712e00bf045f09f194aac964b8.tar.gz
linux-1da4e16130d36c712e00bf045f09f194aac964b8.tar.bz2
linux-1da4e16130d36c712e00bf045f09f194aac964b8.zip
media: videobuf2-core: reverse the iteration order in __vb2_buf_dmabuf_put
This patch prepares for allowing multiple planes to share the same DMA buffer attachment. Release the planes from num_planes - 1 to 0 so that we don't leave invalid mem_priv pointers behind. Signed-off-by: Yunke Cao <yunkec@chromium.org> Acked-by: Tomasz Figa <tfiga@chromium.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r--drivers/media/common/videobuf2/videobuf2-core.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
index b53d94659e30..e6af963307e3 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
@@ -323,9 +323,15 @@ static void __vb2_plane_dmabuf_put(struct vb2_buffer *vb, struct vb2_plane *p)
*/
static void __vb2_buf_dmabuf_put(struct vb2_buffer *vb)
{
- unsigned int plane;
+ int plane;
- for (plane = 0; plane < vb->num_planes; ++plane)
+ /*
+ * When multiple planes share the same DMA buffer attachment, the plane
+ * with the lowest index owns the mem_priv.
+ * Put planes in the reversed order so that we don't leave invalid
+ * mem_priv behind.
+ */
+ for (plane = vb->num_planes - 1; plane >= 0; --plane)
__vb2_plane_dmabuf_put(vb, &vb->planes[plane]);
}