diff options
author | Hariram Purushothaman <hariramp@codeaurora.org> | 2016-03-14 11:07:08 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:04:04 -0700 |
commit | 3ed7aee8cad93a18ec4bbd1d8849e7f626caf8d2 (patch) | |
tree | b2e76023341790ad0216b10c33a0f4402415e1eb /drivers/media | |
parent | 2643b2dfcef4e6147f557eca24de13b2da76d687 (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.c | 6 |
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) |