OSDN Git Service

v4l: vsp1: Prevent multiple streamon race commencing pipeline early
authorKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Fri, 6 Jan 2017 12:15:28 +0000 (10:15 -0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Mar 2018 08:17:50 +0000 (09:17 +0100)
commit735b0f043d484a535a7a8f57157e32bade8ae1ef
treee45b476a3eb55758b219be6e2b0300b590324560
parentc86742fc38993fd42672c55cec0ae537279e3fbb
v4l: vsp1: Prevent multiple streamon race commencing pipeline early

[ Upstream commit 4461c84b52b4a952c657505ef7e4e06b016783df ]

With multiple inputs through the BRU it is feasible for the streams to
race each other at stream-on.

Multiple VIDIOC_STREAMON calls racing each other could have process
N-1 skipping over the pipeline setup section and then start the pipeline
early, if videobuf2 has already enqueued buffers to the driver for
process N but not called the .start_streaming() operation yet

In the case of the video pipelines, this
can present two serious issues.

 1) A null-dereference if the pipe->dl is committed at the same time as
    the vsp1_video_setup_pipeline() is processing

 2) A hardware hang, where a display list is committed without having
    called vsp1_video_setup_pipeline() first

Repair this issue, by ensuring that only the stream which configures the
pipeline is able to start it.

Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/vsp1/vsp1_video.c