summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorWang Yufen <wangyufen@huawei.com>2022-12-05 16:15:27 +0800
committerMark Brown <broonie@kernel.org>2022-12-07 14:19:12 +0000
commit8ab2d12c726f0fde0692fa5d81d8019b3dcd62d0 (patch)
treee9ca0364ca48b4f1341e39fa20b815a3e67c1f5c /sound
parent3327d721114c109ba0575f86f8fda3b525404054 (diff)
downloadlinux-8ab2d12c726f0fde0692fa5d81d8019b3dcd62d0.tar.bz2
ASoC: audio-graph-card: fix refcount leak of cpu_ep in __graph_for_each_link()
The of_get_next_child() returns a node with refcount incremented, and decrements the refcount of prev. So in the error path of the while loop, of_node_put() needs be called for cpu_ep. Fixes: fce9b90c1ab7 ("ASoC: audio-graph-card: cleanup DAI link loop method - step2") Signed-off-by: Wang Yufen <wangyufen@huawei.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/1670228127-13835-1-git-send-email-wangyufen@huawei.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/generic/audio-graph-card.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
index fe7cf972d44c..5daa824a4ffc 100644
--- a/sound/soc/generic/audio-graph-card.c
+++ b/sound/soc/generic/audio-graph-card.c
@@ -485,8 +485,10 @@ static int __graph_for_each_link(struct asoc_simple_priv *priv,
of_node_put(codec_ep);
of_node_put(codec_port);
- if (ret < 0)
+ if (ret < 0) {
+ of_node_put(cpu_ep);
return ret;
+ }
codec_port_old = codec_port;
}