ASoC: soc-pcm: fixup dpcm_prune_paths() loop continue
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 15 Oct 2019 03:59:38 +0000 (12:59 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 31 Dec 2019 15:44:13 +0000 (16:44 +0100)
commit0e8be3f402e2b4ba341e95737df243bbbd606f89
treef0a6aeecc81f9cb61cd8a305c6db4f703014c80b
parent9d1cdde7f629dc6e7f2f5a087e844946b022fa7c
ASoC: soc-pcm: fixup dpcm_prune_paths() loop continue

[ Upstream commit bed646dc3f7bcec91178c278deaf969cce0700a8 ]

dpcm_prune_paths() is checking widget at 2 parts.
(A) is for CPU, (B) is for Codec.
If we focus to (A) part, continue at (a) is for (1) loop. But,
if we focus to (B) part, continue at (b) is for (2) loop, not for (1).
This is bug.
This patch fixup this issue.

static int dpcm_prune_paths(...)
{
...
   (1) for_each_dpcm_be(fe, stream, dpcm) {
...

 ^ widget = dai_get_widget(...);
 |
(A) if (widget && widget_in_list(...))
 | (a) continue;
 v
 ^ (2) for_each_rtd_codec_dai(...) {
 | widget = dai_get_widget(...);
(B)
 | if (widget && widget_in_list(...))
 v (b) continue;
}
...

Fixes: 2e5894d73789 ("ASoC: pcm: Add support for DAI multicodec")
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87blui64mf.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/soc-pcm.c