Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 151c4266 authored by Tejas Prajapati's avatar Tejas Prajapati Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarTejas Prajapati <tpraja@codeaurora.org>
parent 8c5f76e8
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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);