diff options
author | 2024-03-14 16:32:21 +0100 | |
---|---|---|
committer | 2024-03-25 12:00:44 +0100 | |
commit | 6e423b75d0492e82fa6f057c615427ebd7ebe76c (patch) | |
tree | 87c3045393a3565f10c94355897103b1cf04b454 /drivers/media/common/videobuf2/videobuf2-v4l2.c | |
parent | media: test-drivers: Set REQBUFS minimum number of buffers (diff) | |
download | linux-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.c | 14 |
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); |