aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/v4l2-core/videobuf2-core.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index ce308f6d2095..17f1d071739c 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -100,6 +100,8 @@ module_param(debug, int, 0644);
100#define V4L2_BUFFER_OUT_FLAGS (V4L2_BUF_FLAG_PFRAME | V4L2_BUF_FLAG_BFRAME | \ 100#define V4L2_BUFFER_OUT_FLAGS (V4L2_BUF_FLAG_PFRAME | V4L2_BUF_FLAG_BFRAME | \
101 V4L2_BUF_FLAG_KEYFRAME | V4L2_BUF_FLAG_TIMECODE) 101 V4L2_BUF_FLAG_KEYFRAME | V4L2_BUF_FLAG_TIMECODE)
102 102
103static void __vb2_queue_cancel(struct vb2_queue *q);
104
103/** 105/**
104 * __vb2_buf_mem_alloc() - allocate video memory for the given buffer 106 * __vb2_buf_mem_alloc() - allocate video memory for the given buffer
105 */ 107 */
@@ -802,6 +804,12 @@ static int __reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
802 return -EBUSY; 804 return -EBUSY;
803 } 805 }
804 806
807 /*
808 * Call queue_cancel to clean up any buffers in the PREPARED or
809 * QUEUED state which is possible if buffers were prepared or
810 * queued without ever calling STREAMON.
811 */
812 __vb2_queue_cancel(q);
805 ret = __vb2_queue_free(q, q->num_buffers); 813 ret = __vb2_queue_free(q, q->num_buffers);
806 if (ret) 814 if (ret)
807 return ret; 815 return ret;