Просмотр исходного кода

Merge "msm: camera: common: Return appropriate error code for cancelled requests" into camera-kernel.lnx.4.0

Camera Software Integration 5 лет назад
Родитель
Сommit
f4fbab5083
2 измененных файлов с 12 добавлено и 3 удалено
  1. 1 1
      drivers/cam_core/cam_context_utils.c
  2. 11 2
      drivers/cam_req_mgr/cam_req_mgr_core.c

+ 1 - 1
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;
 	}
 

+ 11 - 2
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;
 	}