aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/common/videobuf2/videobuf2-v4l2.c
diff options
context:
space:
mode:
authorGravatar Benjamin Gaignard <benjamin.gaignard@collabora.com> 2024-03-14 16:32:21 +0100
committerGravatar Hans Verkuil <hverkuil-cisco@xs4all.nl> 2024-03-25 12:00:44 +0100
commit6e423b75d0492e82fa6f057c615427ebd7ebe76c (patch)
tree87c3045393a3565f10c94355897103b1cf04b454 /drivers/media/common/videobuf2/videobuf2-v4l2.c
parentmedia: test-drivers: Set REQBUFS minimum number of buffers (diff)
downloadlinux-6e423b75d0492e82fa6f057c615427ebd7ebe76c.tar.gz
linux-6e423b75d0492e82fa6f057c615427ebd7ebe76c.tar.bz2
linux-6e423b75d0492e82fa6f057c615427ebd7ebe76c.zip
media: core: Rework how create_buf index returned value is computed
When REMOVE_BUFS will be introduced holes could created in bufs array. To be able to reuse these unused indices reworking how create->index is set is mandatory. Let __vb2_queue_alloc() decide which first index is correct and forward this to the caller. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Diffstat (limited to 'drivers/media/common/videobuf2/videobuf2-v4l2.c')
-rw-r--r--drivers/media/common/videobuf2/videobuf2-v4l2.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c
index c575198e8354..03e8080a68a8 100644
--- a/drivers/media/common/videobuf2/videobuf2-v4l2.c
+++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c
@@ -795,11 +795,15 @@ int vb2_create_bufs(struct vb2_queue *q, struct v4l2_create_buffers *create)
for (i = 0; i < requested_planes; i++)
if (requested_sizes[i] == 0)
return -EINVAL;
- return ret ? ret : vb2_core_create_bufs(q, create->memory,
- create->flags,
- &create->count,
- requested_planes,
- requested_sizes);
+ if (ret)
+ return ret;
+
+ return vb2_core_create_bufs(q, create->memory,
+ create->flags,
+ &create->count,
+ requested_planes,
+ requested_sizes,
+ &create->index);
}
EXPORT_SYMBOL_GPL(vb2_create_bufs);