ASoC: mediatek: mtk-btcvsd: Fix an error handling path in 'mtk_btcvsd_snd_probe()'
[ Upstream commit b6052c3c7a78f5e2b9756c92ef77c0b56435f107 ]
If an error occurs after a successful 'of_iomap()' call, it must be undone
by a corresponding 'iounmap()' call, as already done in the remove
function.
While at it, remove the useless initialization of 'ret' at the beginning of
the function.
Fixes: 4bd8597dc3
("ASoC: mediatek: add btcvsd driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/0c2ba562c3364e61bfbd5b3013a99dfa0d9045d7.1622989685.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
92a30a90d6
commit
d4d3cd4c76
@@ -1281,7 +1281,7 @@ static const struct snd_soc_component_driver mtk_btcvsd_snd_platform = {
|
|||||||
|
|
||||||
static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret;
|
||||||
int irq_id;
|
int irq_id;
|
||||||
u32 offset[5] = {0, 0, 0, 0, 0};
|
u32 offset[5] = {0, 0, 0, 0, 0};
|
||||||
struct mtk_btcvsd_snd *btcvsd;
|
struct mtk_btcvsd_snd *btcvsd;
|
||||||
@@ -1337,7 +1337,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
|||||||
btcvsd->bt_sram_bank2_base = of_iomap(dev->of_node, 1);
|
btcvsd->bt_sram_bank2_base = of_iomap(dev->of_node, 1);
|
||||||
if (!btcvsd->bt_sram_bank2_base) {
|
if (!btcvsd->bt_sram_bank2_base) {
|
||||||
dev_err(dev, "iomap bt_sram_bank2_base fail\n");
|
dev_err(dev, "iomap bt_sram_bank2_base fail\n");
|
||||||
return -EIO;
|
ret = -EIO;
|
||||||
|
goto unmap_pkv_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
btcvsd->infra = syscon_regmap_lookup_by_phandle(dev->of_node,
|
btcvsd->infra = syscon_regmap_lookup_by_phandle(dev->of_node,
|
||||||
@@ -1345,7 +1346,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(btcvsd->infra)) {
|
if (IS_ERR(btcvsd->infra)) {
|
||||||
dev_err(dev, "cannot find infra controller: %ld\n",
|
dev_err(dev, "cannot find infra controller: %ld\n",
|
||||||
PTR_ERR(btcvsd->infra));
|
PTR_ERR(btcvsd->infra));
|
||||||
return PTR_ERR(btcvsd->infra);
|
ret = PTR_ERR(btcvsd->infra);
|
||||||
|
goto unmap_bank2_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get offset */
|
/* get offset */
|
||||||
@@ -1354,7 +1356,7 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
|||||||
ARRAY_SIZE(offset));
|
ARRAY_SIZE(offset));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_warn(dev, "%s(), get offset fail, ret %d\n", __func__, ret);
|
dev_warn(dev, "%s(), get offset fail, ret %d\n", __func__, ret);
|
||||||
return ret;
|
goto unmap_bank2_err;
|
||||||
}
|
}
|
||||||
btcvsd->infra_misc_offset = offset[0];
|
btcvsd->infra_misc_offset = offset[0];
|
||||||
btcvsd->conn_bt_cvsd_mask = offset[1];
|
btcvsd->conn_bt_cvsd_mask = offset[1];
|
||||||
@@ -1373,8 +1375,18 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
|
|||||||
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->tx, BT_SCO_STATE_IDLE);
|
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->tx, BT_SCO_STATE_IDLE);
|
||||||
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->rx, BT_SCO_STATE_IDLE);
|
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->rx, BT_SCO_STATE_IDLE);
|
||||||
|
|
||||||
return devm_snd_soc_register_component(dev, &mtk_btcvsd_snd_platform,
|
ret = devm_snd_soc_register_component(dev, &mtk_btcvsd_snd_platform,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
|
if (ret)
|
||||||
|
goto unmap_bank2_err;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
unmap_bank2_err:
|
||||||
|
iounmap(btcvsd->bt_sram_bank2_base);
|
||||||
|
unmap_pkv_err:
|
||||||
|
iounmap(btcvsd->bt_pkv_base);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mtk_btcvsd_snd_remove(struct platform_device *pdev)
|
static int mtk_btcvsd_snd_remove(struct platform_device *pdev)
|
||||||
|
Reference in New Issue
Block a user