Skip to content

Commit

Permalink
ASoC: mediatek: mt8183: fix refcount leak in mt8183_mt6358_ts3a227_ma…
Browse files Browse the repository at this point in the history
…x98357_dev_probe()

[ Upstream commit 38eef3b ]

The node returned by of_parse_phandle() with refcount incremented,
of_node_put() needs be called when finish using it. So add it in the
error path in mt8183_mt6358_ts3a227_max98357_dev_probe().

Fixes: 11c0269 ("ASoC: Mediatek: MT8183: Add machine driver with TS3A227")
Signed-off-by: Wang Yufen <wangyufen@huawei.com>
Link: https://lore.kernel.org/r/1670234188-23596-1-git-send-email-wangyufen@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
wangyufen316 authored and gregkh committed Dec 31, 2022
1 parent e5d6bf3 commit 82f7c81
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c
Expand Up @@ -647,8 +647,10 @@ mt8183_mt6358_ts3a227_max98357_dev_probe(struct platform_device *pdev)
}

card = (struct snd_soc_card *)of_device_get_match_data(&pdev->dev);
if (!card)
if (!card) {
of_node_put(platform_node);
return -EINVAL;
}
card->dev = &pdev->dev;

ec_codec = of_parse_phandle(pdev->dev.of_node, "mediatek,ec-codec", 0);
Expand Down Expand Up @@ -737,16 +739,19 @@ mt8183_mt6358_ts3a227_max98357_dev_probe(struct platform_device *pdev)
}

priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
if (!priv) {
ret = -ENOMEM;
goto out;
}

snd_soc_card_set_drvdata(card, priv);

priv->pinctrl = devm_pinctrl_get(&pdev->dev);
if (IS_ERR(priv->pinctrl)) {
dev_err(&pdev->dev, "%s devm_pinctrl_get failed\n",
__func__);
return PTR_ERR(priv->pinctrl);
ret = PTR_ERR(priv->pinctrl);
goto out;
}

for (i = 0; i < PIN_STATE_MAX; i++) {
Expand Down Expand Up @@ -779,6 +784,7 @@ mt8183_mt6358_ts3a227_max98357_dev_probe(struct platform_device *pdev)

ret = devm_snd_soc_register_card(&pdev->dev, card);

out:
of_node_put(platform_node);
of_node_put(ec_codec);
of_node_put(hdmi_codec);
Expand Down

0 comments on commit 82f7c81

Please sign in to comment.