From 21f7cd5ee4b905d8296dd6301fe64e4644d7eb16 Mon Sep 17 00:00:00 2001 From: Senthil Kumar Rajagopal Date: Tue, 21 Feb 2017 16:58:03 +0530 Subject: [PATCH] msm: camera: isp: fix for enqueue buffer failure Return values are not handled in this msm_isp_proc_buf_cmd. Though buffer enqueue or dequeue failed, still returning 0. CRs-Fixed: 2002948 Change-Id: I9cb8c79f0155e658d4c7918b271ec025758b575f Signed-off-by: Senthil Kumar Rajagopal --- .../platform/msm/camera_v2/isp/msm_buf_mgr.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c index 8d66232dbda1..be70c127fedb 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c @@ -1282,6 +1282,7 @@ static int msm_isp_deinit_isp_buf_mgr( int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr, unsigned int cmd, void *arg) { + int rc = -EINVAL; switch (cmd) { case VIDIOC_MSM_ISP_REQUEST_BUF: { struct msm_isp_buf_request *buf_req = arg; @@ -1290,7 +1291,7 @@ int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr, memcpy(&buf_req_ver2, buf_req, sizeof(struct msm_isp_buf_request)); buf_req_ver2.security_mode = NON_SECURE_MODE; - buf_mgr->ops->request_buf(buf_mgr, &buf_req_ver2); + rc = buf_mgr->ops->request_buf(buf_mgr, &buf_req_ver2); memcpy(buf_req, &buf_req_ver2, sizeof(struct msm_isp_buf_request)); break; @@ -1298,35 +1299,35 @@ int msm_isp_proc_buf_cmd(struct msm_isp_buf_mgr *buf_mgr, case VIDIOC_MSM_ISP_REQUEST_BUF_VER2: { struct msm_isp_buf_request_ver2 *buf_req_ver2 = arg; - buf_mgr->ops->request_buf(buf_mgr, buf_req_ver2); + rc = buf_mgr->ops->request_buf(buf_mgr, buf_req_ver2); break; } case VIDIOC_MSM_ISP_ENQUEUE_BUF: { struct msm_isp_qbuf_info *qbuf_info = arg; - buf_mgr->ops->enqueue_buf(buf_mgr, qbuf_info); + rc = buf_mgr->ops->enqueue_buf(buf_mgr, qbuf_info); break; } case VIDIOC_MSM_ISP_DEQUEUE_BUF: { struct msm_isp_qbuf_info *qbuf_info = arg; - buf_mgr->ops->dequeue_buf(buf_mgr, qbuf_info); + rc = buf_mgr->ops->dequeue_buf(buf_mgr, qbuf_info); break; } case VIDIOC_MSM_ISP_RELEASE_BUF: { struct msm_isp_buf_request *buf_req = arg; - buf_mgr->ops->release_buf(buf_mgr, buf_req->handle); + rc = buf_mgr->ops->release_buf(buf_mgr, buf_req->handle); break; } case VIDIOC_MSM_ISP_UNMAP_BUF: { struct msm_isp_unmap_buf_req *unmap_req = arg; - buf_mgr->ops->unmap_buf(buf_mgr, unmap_req->fd); + rc = buf_mgr->ops->unmap_buf(buf_mgr, unmap_req->fd); break; } } - return 0; + return rc; } static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr,