ASoC: mediatek: mt8195: add missing of_node_put in probe
authorTrevor Wu <trevor.wu@mediatek.com>
Tue, 28 Sep 2021 06:35:20 +0000 (14:35 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 28 Sep 2021 12:16:25 +0000 (13:16 +0100)
dp node and hdmi node are retrieved from of_parse_phandle(), so using
of_node_put() on them before return.

Signed-off-by: Trevor Wu <trevor.wu@mediatek.com>
Link: https://lore.kernel.org/r/20210928063520.23927-1-trevor.wu@mediatek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c

index 8cd8450..d1ee847 100644 (file)
@@ -996,6 +996,8 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &mt8195_mt6359_rt1019_rt5682_soc_card;
        struct device_node *platform_node;
+       struct device_node *dp_node;
+       struct device_node *hdmi_node;
        struct snd_soc_dai_link *dai_link;
        struct mt8195_mt6359_rt1019_rt5682_priv *priv = NULL;
        int ret, i;
@@ -1014,12 +1016,12 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev)
                        dai_link->platforms->of_node = platform_node;
 
                if (strcmp(dai_link->name, "DPTX_BE") == 0) {
-                       dai_link->codecs->of_node =
-                               of_parse_phandle(pdev->dev.of_node,
-                                                "mediatek,dptx-codec", 0);
-                       if (!dai_link->codecs->of_node) {
+                       dp_node = of_parse_phandle(pdev->dev.of_node,
+                                                  "mediatek,dptx-codec", 0);
+                       if (!dp_node) {
                                dev_dbg(&pdev->dev, "No property 'dptx-codec'\n");
                        } else {
+                               dai_link->codecs->of_node = dp_node;
                                dai_link->codecs->name = NULL;
                                dai_link->codecs->dai_name = "i2s-hifi";
                                dai_link->init = mt8195_dptx_codec_init;
@@ -1027,12 +1029,12 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev)
                }
 
                if (strcmp(dai_link->name, "ETDM3_OUT_BE") == 0) {
-                       dai_link->codecs->of_node =
-                               of_parse_phandle(pdev->dev.of_node,
-                                                "mediatek,hdmi-codec", 0);
-                       if (!dai_link->codecs->of_node) {
+                       hdmi_node = of_parse_phandle(pdev->dev.of_node,
+                                                    "mediatek,hdmi-codec", 0);
+                       if (!hdmi_node) {
                                dev_dbg(&pdev->dev, "No property 'hdmi-codec'\n");
                        } else {
+                               dai_link->codecs->of_node = hdmi_node;
                                dai_link->codecs->name = NULL;
                                dai_link->codecs->dai_name = "i2s-hifi";
                                dai_link->init = mt8195_hdmi_codec_init;
@@ -1042,8 +1044,8 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev)
 
        priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
        if (!priv) {
-               of_node_put(platform_node);
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto out;
        }
 
        snd_soc_card_set_drvdata(card, priv);
@@ -1053,6 +1055,9 @@ static int mt8195_mt6359_rt1019_rt5682_dev_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "%s snd_soc_register_card fail %d\n",
                        __func__, ret);
 
+out:
+       of_node_put(hdmi_node);
+       of_node_put(dp_node);
        of_node_put(platform_node);
        return ret;
 }