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

Commit 68118e0e authored by Peter Rosin's avatar Peter Rosin
Browse files

i2c: mux: reg: put away the parent i2c adapter on probe failure



It is only prudent to let go of resources that are not used.

Fixes: b3fdd327 ("i2c: mux: Add register-based mux i2c-mux-reg")
Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
parent 2ea659a9
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -196,20 +196,25 @@ static int i2c_mux_reg_probe(struct platform_device *pdev)
		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
		mux->data.reg_size = resource_size(res);
		mux->data.reg = devm_ioremap_resource(&pdev->dev, res);
		if (IS_ERR(mux->data.reg))
			return PTR_ERR(mux->data.reg);
		if (IS_ERR(mux->data.reg)) {
			ret = PTR_ERR(mux->data.reg);
			goto err_put_parent;
		}
	}

	if (mux->data.reg_size != 4 && mux->data.reg_size != 2 &&
	    mux->data.reg_size != 1) {
		dev_err(&pdev->dev, "Invalid register size\n");
		return -EINVAL;
		ret = -EINVAL;
		goto err_put_parent;
	}

	muxc = i2c_mux_alloc(parent, &pdev->dev, mux->data.n_values, 0, 0,
			     i2c_mux_reg_select, NULL);
	if (!muxc)
		return -ENOMEM;
	if (!muxc) {
		ret = -ENOMEM;
		goto err_put_parent;
	}
	muxc->priv = mux;

	platform_set_drvdata(pdev, muxc);
@@ -233,6 +238,8 @@ static int i2c_mux_reg_probe(struct platform_device *pdev)

add_adapter_failed:
	i2c_mux_del_adapters(muxc);
err_put_parent:
	i2c_put_adapter(parent);

	return ret;
}