summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorannamraj <annamraj@codeaurora.org>2017-11-22 12:21:01 +0530
committerannamraj <annamraj@codeaurora.org>2017-11-22 13:12:23 +0530
commitdd90a001af644069739ddcc069f5103ef025be15 (patch)
treeccbe1de1b1703f7c1579097ec596d0989962343f
parentf697ab3e511d5aa651e0ce53410117e3f13d6213 (diff)
msm: jpegdma: Fix for ASAN issues in jpegdma module
Adding Lock mechanism to avoid concurrency issues between reqbufs and streamoff calls. Change-Id: I955b30a7d05554366df3a2e6c44fc21c5367b2c2 Signed-off-by: annamraj <annamraj@codeaurora.org>
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c11
1 files changed, 7 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 7f6e78710117..ba64433a3fab 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
@@ -816,9 +816,12 @@ static int msm_jpegdma_s_fmt_vid_out(struct file *file,
static int msm_jpegdma_reqbufs(struct file *file,
void *fh, struct v4l2_requestbuffers *req)
{
+ int ret = 0;
struct jpegdma_ctx *ctx = msm_jpegdma_ctx_from_fh(fh);
-
- return v4l2_m2m_reqbufs(file, ctx->m2m_ctx, req);
+ mutex_lock(&ctx->lock);
+ ret = v4l2_m2m_reqbufs(file, ctx->m2m_ctx, req);
+ mutex_unlock(&ctx->lock);
+ return ret;
}
/*
@@ -925,11 +928,11 @@ static int msm_jpegdma_streamoff(struct file *file,
{
struct jpegdma_ctx *ctx = msm_jpegdma_ctx_from_fh(fh);
int ret;
-
+ mutex_lock(&ctx->lock);
ret = v4l2_m2m_streamoff(file, ctx->m2m_ctx, buf_type);
if (ret < 0)
dev_err(ctx->jdma_device->dev, "Stream off fails\n");
-
+ mutex_unlock(&ctx->lock);
return ret;
}