upstream: [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)
committerChanho Park <chanho61.park@samsung.com>
Thu, 7 Aug 2014 05:27:03 +0000 (14:27 +0900)
commitff5287ac71aee8cb0d575f5fa5ada31f9353ba81
tree3b66048ca46349ab08ec81eae4307937cd6ff82d
parent16ae6fe1a8328edccacd0968c836d4e47c223dc6
upstream: [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