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

Merge "msm: camera: smmu: Fix the smmu create_handle function" into camera-kernel.lnx.4.0

Camera Software Integration 4 лет назад
Родитель
Сommit
3da4013942
1 измененных файлов с 7 добавлено и 7 удалено
  1. 7 7
      drivers/cam_smmu/cam_smmu_api.c

+ 7 - 7
drivers/cam_smmu/cam_smmu_api.c

@@ -218,7 +218,7 @@ static struct cam_iommu_cb_set iommu_cb_set;
 static enum dma_data_direction cam_smmu_translate_dir(
 	enum cam_smmu_map_dir dir);
 
-static int cam_smmu_check_handle_unique(int hdl);
+static bool cam_smmu_is_hdl_nonunique_or_null(int hdl);
 
 static int cam_smmu_create_iommu_handle(int idx);
 
@@ -810,13 +810,12 @@ void cam_smmu_reset_iommu_table(enum cam_smmu_init_dir ops)
 	}
 }
 
-static int cam_smmu_check_handle_unique(int hdl)
+static bool cam_smmu_is_hdl_nonunique_or_null(int hdl)
 {
 	int i;
 
-	if (hdl == HANDLE_INIT) {
-		CAM_DBG(CAM_SMMU,
-			"iommu handle is init number. Need to try again");
+	if ((hdl == HANDLE_INIT) || (!hdl)) {
+		CAM_DBG(CAM_SMMU, "iommu handle: %d is not valid", hdl);
 		return 1;
 	}
 
@@ -876,11 +875,12 @@ static int cam_smmu_create_add_handle_in_table(char *name,
 
 			if (iommu_cb_set.cb_info[i].handle == HANDLE_INIT) {
 				mutex_lock(&iommu_cb_set.cb_info[i].lock);
-				/* make sure handle is unique */
+				/* make sure handle is unique and non-zero*/
 				do {
 					handle =
 						cam_smmu_create_iommu_handle(i);
-				} while (cam_smmu_check_handle_unique(handle));
+				} while (cam_smmu_is_hdl_nonunique_or_null(
+						handle));
 
 				/* put handle in the table */
 				iommu_cb_set.cb_info[i].handle = handle;