summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinyu Chen <b03824@freescale.com>2011-12-09 14:47:57 +0800
committerFrank Li <Frank.Li@freescale.com>2011-12-09 16:22:28 +0800
commitbd9bcd6f3e45bf6fd7a53bb289725c210cd260b7 (patch)
treebe600194187e213b01d50ee3556369403670f31e
parent81aa25870c8dc150cad6e2d170414727ce323285 (diff)
ENGR00169891 v4l2 capture: avoid streamon with only one buffer queued
If user space only queue one buffer into ready list, and call streamon, camera csi enc ISR will crash. Since for CSI ENC, the ping pong buffer is initilized without checking ready buffer on streamon. The second buffer will be wrongly in cam_data struct, and causes DMA fill buffers into cam_data global variable. Here just add one sanity check for ready buffer. Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
-rw-r--r--drivers/media/video/mxc/capture/mxc_v4l2_capture.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
index a6045061f505..e4108c291c40 100644
--- a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
+++ b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
@@ -382,6 +382,12 @@ static int mxc_streamon(cam_data *cam)
"queued yet\n");
return -EINVAL;
}
+ if (cam->enc_update_eba &&
+ cam->ready_q.prev == cam->ready_q.next) {
+ pr_err("ERROR: v4l2 capture: mxc_streamon buffer need ping pong "
+ "at least two buffers\n");
+ return -EINVAL;
+ }
cam->capture_pid = current->pid;