diff --git a/drivers/cam_smmu/cam_smmu_api.c b/drivers/cam_smmu/cam_smmu_api.c index c336c0230f2c..48ac8f0ebeb9 100644 --- a/drivers/cam_smmu/cam_smmu_api.c +++ b/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;