Răsfoiți Sursa

msm: camera: sensor: unregister subdev if cpas registration fails

In case if the CPAS registration is failed before freeing the
memory of the subdev, subdev need to be unregistered so that
subdev list entry will not become NULL and other subdev can
be added.

CRs-Fixed: 2708016
Change-Id: I464c73411596fc562fc7a190ddfa130f23ee487a
Signed-off-by: Tejas Prajapati <[email protected]>
Tejas Prajapati 5 ani în urmă
părinte
comite
151c426683

+ 4 - 1
drivers/cam_sensor_module/cam_cci/cam_cci_dev.c

@@ -441,7 +441,7 @@ static int cam_cci_component_bind(struct device *dev,
 	rc = cam_cpas_register_client(&cpas_parms);
 	if (rc) {
 		CAM_ERR(CAM_CCI, "CPAS registration failed rc:%d", rc);
-		goto cci_no_resource;
+		goto cci_unregister_subdev;
 	}
 
 	CAM_DBG(CAM_CCI, "CPAS registration successful handle=%d",
@@ -449,6 +449,9 @@ static int cam_cci_component_bind(struct device *dev,
 	new_cci_dev->cpas_handle = cpas_parms.client_handle;
 	CAM_DBG(CAM_CCI, "Component bound successfully");
 	return rc;
+
+cci_unregister_subdev:
+	cam_unregister_subdev(&(new_cci_dev->v4l2_dev_str));
 cci_no_resource:
 	devm_kfree(&pdev->dev, new_cci_dev);
 	return rc;

+ 4 - 1
drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c

@@ -211,7 +211,7 @@ static int cam_csiphy_component_bind(struct device *dev,
 	rc = cam_cpas_register_client(&cpas_parms);
 	if (rc) {
 		CAM_ERR(CAM_CSIPHY, "CPAS registration failed rc: %d", rc);
-		goto csiphy_no_resource;
+		goto csiphy_unregister_subdev;
 	}
 
 	CAM_DBG(CAM_CSIPHY, "CPAS registration successful handle=%d",
@@ -220,6 +220,9 @@ static int cam_csiphy_component_bind(struct device *dev,
 	CAM_DBG(CAM_CSIPHY, "%s component bound successfully",
 		pdev->name);
 	return rc;
+
+csiphy_unregister_subdev:
+	cam_unregister_subdev(&(new_csiphy_dev->v4l2_dev_str));
 csiphy_no_resource:
 	mutex_destroy(&new_csiphy_dev->mutex);
 	kfree(new_csiphy_dev->ctrl_reg);