diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2019-08-05 04:49:02 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-08-05 04:49:06 -0700 |
commit | 75933cb7fcf7657b5fbba4311d66706c59411cab (patch) | |
tree | ac1e6da3bb32501954394cbd6d15cd11e6f22342 | |
parent | 8d00d083543c31a92fc3c3531992914485b621cb (diff) | |
parent | d49218a77b8df8e619fc990c5bb2bfab071bfa38 (diff) |
Merge "msm: camera: jpegdma: Added missing lock for dqbuf and streamon" into kernel.lnx.4.9.r12-relLA.UM.7.6.2.r1-09500-89xx.0
-rw-r--r-- | drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c index 6d05d293d1b5..bc3c5c631a30 100644 --- a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c +++ b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c @@ -892,8 +892,12 @@ static int msm_jpegdma_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf) { struct jpegdma_ctx *ctx = msm_jpegdma_ctx_from_fh(fh); + int ret; - return v4l2_m2m_dqbuf(file, ctx->m2m_ctx, buf); + mutex_lock(&ctx->lock); + ret = v4l2_m2m_dqbuf(file, ctx->m2m_ctx, buf); + mutex_unlock(&ctx->lock); + return ret; } /* @@ -908,13 +912,15 @@ static int msm_jpegdma_streamon(struct file *file, struct jpegdma_ctx *ctx = msm_jpegdma_ctx_from_fh(fh); int ret; - if (!msm_jpegdma_config_ok(ctx)) + mutex_lock(&ctx->lock); + if (!msm_jpegdma_config_ok(ctx)) { + mutex_unlock(&ctx->lock); return -EINVAL; - + } ret = v4l2_m2m_streamon(file, ctx->m2m_ctx, buf_type); if (ret < 0) dev_err(ctx->jdma_device->dev, "Stream on fail\n"); - + mutex_unlock(&ctx->lock); return ret; } |