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>
This commit is contained in:
Yunke Cao 2024-08-14 11:06:42 +09:00 committed by Hans Verkuil
parent 95af7c00f3
commit 1da4e16130

View File

@ -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) 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]); __vb2_plane_dmabuf_put(vb, &vb->planes[plane]);
} }