[media] v4l: vsp1: Prevent pipelines from running when not streaming
Pipelines can only be run if all their video nodes are streaming. Commitb4dfb9b35a
("[media] v4l: vsp1: Stop the pipeline upon the first STREAMOFF") fixed the pipeline stop sequence, but introduced a race condition that makes it possible to run a pipeline after stopping the stream on a video node by queuing a buffer on the other side of the pipeline. Fix this by clearing the buffers ready flag when stopping the stream, which will prevent the QBUF handler from running the pipeline. Fixes:b4dfb9b35a
("[media] v4l: vsp1: Stop the pipeline upon the first STREAMOFF") Reported-by: Kieran Bingham <kieran@bingham.xyz> Tested-by: Kieran Bingham <kieran@bingham.xyz> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Родитель
3c3ba5452e
Коммит
e4e70a147a
|
@ -675,6 +675,13 @@ static void vsp1_video_stop_streaming(struct vb2_queue *vq)
|
|||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
/* Clear the buffers ready flag to make sure the device won't be started
|
||||
* by a QBUF on the video node on the other side of the pipeline.
|
||||
*/
|
||||
spin_lock_irqsave(&video->irqlock, flags);
|
||||
pipe->buffers_ready &= ~(1 << video->pipe_index);
|
||||
spin_unlock_irqrestore(&video->irqlock, flags);
|
||||
|
||||
mutex_lock(&pipe->lock);
|
||||
if (--pipe->stream_count == pipe->num_inputs) {
|
||||
/* Stop the pipeline. */
|
||||
|
|
Загрузка…
Ссылка в новой задаче