From 4cf743de880e3e60f106b7fc713f235abad9ea7e Mon Sep 17 00:00:00 2001
From: Philipp Zabel
Date: Fri, 9 May 2014 12:32:10 -0300
Subject: [PATCH] [media] vb2: fix num_buffers calculation if req->count >
VIDEO_MAX_FRAMES
num_buffers can't be bigger than VIDEO_MAX_FRAME. This is assured by:
num_buffers = min_t(unsigned int, req->count, VIDEO_MAX_FRAME);
However, this value is overriden by:
num_buffers = max_t(unsigned int, req->count, q->min_buffers_needed);
It should, instead, use the previously calculated value as an input
to max_t:
num_buffers = max_t(unsigned int, num_buffers, q->min_buffers_needed);
Signed-off-by: Philipp Zabel
Reviewed-by: Hans Verkuil
Signed-off-by: Hans Verkuil
Signed-off-by: Mauro Carvalho Chehab
---
drivers/media/v4l2-core/videobuf2-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index 8d37e291f722..6489c991700a 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -905,7 +905,7 @@ static int __reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
* Make sure the requested values and current defaults are sane.
*/
num_buffers = min_t(unsigned int, req->count, VIDEO_MAX_FRAME);
- num_buffers = max_t(unsigned int, req->count, q->min_buffers_needed);
+ num_buffers = max_t(unsigned int, num_buffers, q->min_buffers_needed);
memset(q->plane_sizes, 0, sizeof(q->plane_sizes));
memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));
q->memory = req->memory;
--
2.39.5