Commit b4dfb9b3 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

[media] v4l: vsp1: Stop the pipeline upon the first STREAMOFF

The device is stopped when STREAMOFF is called on the last video node in
the pipeline. This results in possible memory corruption and/or crashes,
as userspace could free buffers while the hardware is still writing to
them, and the frame completion interrupt handler could try to access
buffers that don't exist anymore.

Fix this by stopping the pipeline upon the first STREAMOFF call, not the
last.
Reported-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent eb9163d3
...@@ -674,7 +674,7 @@ static void vsp1_video_stop_streaming(struct vb2_queue *vq) ...@@ -674,7 +674,7 @@ static void vsp1_video_stop_streaming(struct vb2_queue *vq)
int ret; int ret;
mutex_lock(&pipe->lock); mutex_lock(&pipe->lock);
if (--pipe->stream_count == 0) { if (--pipe->stream_count == pipe->num_inputs) {
/* Stop the pipeline. */ /* Stop the pipeline. */
ret = vsp1_pipeline_stop(pipe); ret = vsp1_pipeline_stop(pipe);
if (ret == -ETIMEDOUT) if (ret == -ETIMEDOUT)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment