diff --git a/drivers/cam_core/cam_context_utils.c b/drivers/cam_core/cam_context_utils.c index d69ab63bfa52..99a51ad193bb 100644 --- a/drivers/cam_core/cam_context_utils.c +++ b/drivers/cam_core/cam_context_utils.c @@ -395,7 +395,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; } diff --git a/drivers/cam_req_mgr/cam_req_mgr_core.c b/drivers/cam_req_mgr/cam_req_mgr_core.c index fc5495cc6f2e..ae9a90caed04 100644 --- a/drivers/cam_req_mgr/cam_req_mgr_core.c +++ b/drivers/cam_req_mgr/cam_req_mgr_core.c @@ -2838,8 +2838,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); - rc = -ENOENT; + 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; }