Skip to content

Commit b7ff0b0

Browse files
Hans Verkuilmchehab
Hans Verkuil
authored andcommitted
media: vb2: skip request checks for VIDIOC_PREPARE_BUF
VIDIOC_PREPARE_BUF should ignore V4L2_BUF_FLAG_REQUEST_FD since it isn't doing anything with requests. So inform vb2_queue_or_prepare_buf whether it is called from vb2_prepare_buf or vb2_qbuf and just return 0 in the first case. This was found when adding new v4l2-compliance checks. Signed-off-by: Hans Verkuil <[email protected]> Acked-by: Sakari Ailus <[email protected]> Signed-off-by: Hans Verkuil <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
1 parent 0499021 commit b7ff0b0

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

drivers/media/common/videobuf2/videobuf2-v4l2.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,10 +333,10 @@ static int vb2_fill_vb2_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b
333333
}
334334

335335
static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *mdev,
336-
struct v4l2_buffer *b,
337-
const char *opname,
336+
struct v4l2_buffer *b, bool is_prepare,
338337
struct media_request **p_req)
339338
{
339+
const char *opname = is_prepare ? "prepare_buf" : "qbuf";
340340
struct media_request *req;
341341
struct vb2_v4l2_buffer *vbuf;
342342
struct vb2_buffer *vb;
@@ -378,6 +378,9 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
378378
return ret;
379379
}
380380

381+
if (is_prepare)
382+
return 0;
383+
381384
if (!(b->flags & V4L2_BUF_FLAG_REQUEST_FD)) {
382385
if (q->uses_requests) {
383386
dprintk(1, "%s: queue uses requests\n", opname);
@@ -657,7 +660,7 @@ int vb2_prepare_buf(struct vb2_queue *q, struct media_device *mdev,
657660
if (b->flags & V4L2_BUF_FLAG_REQUEST_FD)
658661
return -EINVAL;
659662

660-
ret = vb2_queue_or_prepare_buf(q, mdev, b, "prepare_buf", NULL);
663+
ret = vb2_queue_or_prepare_buf(q, mdev, b, true, NULL);
661664

662665
return ret ? ret : vb2_core_prepare_buf(q, b->index, b);
663666
}
@@ -729,7 +732,7 @@ int vb2_qbuf(struct vb2_queue *q, struct media_device *mdev,
729732
return -EBUSY;
730733
}
731734

732-
ret = vb2_queue_or_prepare_buf(q, mdev, b, "qbuf", &req);
735+
ret = vb2_queue_or_prepare_buf(q, mdev, b, false, &req);
733736
if (ret)
734737
return ret;
735738
ret = vb2_core_qbuf(q, b->index, b, req);

0 commit comments

Comments
 (0)