[media] v4l: vb2: Avoid double WARN_ON when stopping streaming
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sun, 20 Apr 2014 23:55:41 +0000 (20:55 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Fri, 23 May 2014 16:50:40 +0000 (13:50 -0300)
commitb646f0b7290c2cb68450c61256eb475e44437026
tree4f1c4452fece5bd531b978dbe976484895f6e7a1
parenta5c075cfd2386a4f3ab4f8ed2830ebee557d4b3f
[media] v4l: vb2: Avoid double WARN_ON when stopping streaming

The __vb2_queue_cancel function marks the queue as not streaming and
then WARNs when buffers are still owned by the driver. It proceeds to
complete all active buffers by calling vb2_buffer_done with the new
buffer state set to VB2_BUF_STATE_ERROR in that case. This triggers
another WARN_ON due to as new state not being VB2_BUF_STATE_QUEUED while
the queue is not streaming.

Check buffer ownership and complete all active buffers before marking
the queue as not streaming to avoid the double WARN_on.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/v4l2-core/videobuf2-core.c