From 657d77d87d2474394bc22a50a62c9a0aecb1a16f Mon Sep 17 00:00:00 2001 From: Jigarkumar Zala Date: Wed, 19 Jun 2019 12:17:30 -0700 Subject: [PATCH] msm: camera: icp: Protect icp context access at time of pagefault Take mutex before acessing icp context to prevent improper free. Change-Id: If2fd2c66dd9a00f1ab5c9ec1710573c2921dce6a Signed-off-by: Prakasha Nayak --- drivers/cam_icp/cam_icp_context.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/cam_icp/cam_icp_context.c b/drivers/cam_icp/cam_icp_context.c index 86876a35b671..6e043fd95c63 100644 --- a/drivers/cam_icp/cam_icp_context.c +++ b/drivers/cam_icp/cam_icp_context.c @@ -37,6 +37,14 @@ static int cam_icp_context_dump_active_request(void *data, unsigned long iova, return -EINVAL; } + mutex_lock(&ctx->ctx_mutex); + + if (ctx->state < CAM_CTX_ACQUIRED || ctx->state > CAM_CTX_ACTIVATED) { + CAM_ERR(CAM_ICP, "Invalid state icp ctx %d state %d", + ctx->ctx_id, ctx->state); + goto end; + } + CAM_INFO(CAM_ICP, "iommu fault for icp ctx %d state %d", ctx->ctx_id, ctx->state); @@ -55,6 +63,8 @@ static int cam_icp_context_dump_active_request(void *data, unsigned long iova, req->request_id, rc); } +end: + mutex_unlock(&ctx->ctx_mutex); return rc; }