Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb24ba9b authored by Karthik Anantha Ram's avatar Karthik Anantha Ram Committed by Mukund Madhusudan Atre
Browse files

msm: camera: common: Return appropriate error code for cancelled requests



If a request is submitted post flush and the request ID of that
request is <= last flush req ID return an appropriate error code
to indicate the same.

CRs-Fixed: 2720555
Change-Id: Ic26c4fc5f0ba490ed277b3bb301cc02d1fa027d6
Signed-off-by: default avatarKarthik Anantha Ram <kartanan@codeaurora.org>
Signed-off-by: default avatarMukund Madhusudan Atre <matre@codeaurora.org>
parent cd3fb381
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -396,7 +396,7 @@ int32_t cam_context_prepare_dev_to_hw(struct cam_context *ctx,
		CAM_ERR(CAM_CORE,
			"request %lld has been flushed, reject packet",
			packet->header.request_id);
		rc = -EINVAL;
		rc = -EBADR;
		goto free_req;
	}

+11 −2
Original line number Diff line number Diff line
@@ -2829,8 +2829,17 @@ static int cam_req_mgr_cb_add_req(struct cam_req_mgr_add_request *add_req)
	/* Validate if req id is present in input queue */
	idx = __cam_req_mgr_find_slot_for_req(link->req.in_q, add_req->req_id);
	if (idx < 0) {
		CAM_ERR(CAM_CRM, "req %lld not found in in_q", add_req->req_id);
		if (((uint32_t)add_req->req_id) <= (link->last_flush_id)) {
			CAM_ERR(CAM_CRM,
				"req %lld not found in in_q; it has been flushed [last_flush_req %u]",
				add_req->req_id, link->last_flush_id);
			rc = -EBADR;
		} else {
			CAM_ERR(CAM_CRM,
				"req %lld not found in in_q",
				add_req->req_id);
			rc = -ENOENT;
		}
		goto end;
	}