summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorHariram Purushothaman <hariramp@codeaurora.org>2016-03-14 11:07:08 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:04:04 -0700
commit3ed7aee8cad93a18ec4bbd1d8849e7f626caf8d2 (patch)
treeb2e76023341790ad0216b10c33a0f4402415e1eb /drivers/media
parent2643b2dfcef4e6147f557eca24de13b2da76d687 (diff)
msm: camera: Add stream base locks for all vb2 ops.
Stream based lock needed in all vb2 ops to avoid any invalid access in vb2 queue when hal triggers ioctl in multiple thread context. CRs-Fixed: 986029 Change-Id: Idcbef3db5c2bd04005b0832049b5dee00c4cf96b Signed-off-by: Hariram Purushothaman <hariramp@codeaurora.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/platform/msm/camera_v2/camera/camera.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/platform/msm/camera_v2/camera/camera.c b/drivers/media/platform/msm/camera_v2/camera/camera.c
index f2c78d470a2e..d88c993bcc2d 100644
--- a/drivers/media/platform/msm/camera_v2/camera/camera.c
+++ b/drivers/media/platform/msm/camera_v2/camera/camera.c
@@ -279,7 +279,9 @@ static int camera_v4l2_streamon(struct file *filep, void *fh,
int rc;
struct camera_v4l2_private *sp = fh_to_private(fh);
+ mutex_lock(&sp->lock);
rc = vb2_streamon(&sp->vb2_q, buf_type);
+ mutex_unlock(&sp->lock);
camera_pack_event(filep, MSM_CAMERA_SET_PARM,
MSM_CAMERA_PRIV_STREAM_ON, -1, &event);
@@ -306,7 +308,9 @@ static int camera_v4l2_streamoff(struct file *filep, void *fh,
return rc;
rc = camera_check_event_status(&event);
+ mutex_lock(&sp->lock);
vb2_streamoff(&sp->vb2_q, buf_type);
+ mutex_unlock(&sp->lock);
return rc;
}
@@ -549,7 +553,9 @@ static void camera_v4l2_vb2_q_release(struct file *filep)
struct camera_v4l2_private *sp = filep->private_data;
kzfree(sp->vb2_q.drv_priv);
+ mutex_lock(&sp->lock);
vb2_queue_release(&sp->vb2_q);
+ mutex_unlock(&sp->lock);
}
static int camera_v4l2_open(struct file *filep)