ASoC: topology: fix soc_tplg_fe_link_create() - link->dobj initialization order
[ Upstream commit 8ce1cbd6ce0b1bda0c980c64fee4c1e1378355f1 ] The code which checks the return value for snd_soc_add_dai_link() call in soc_tplg_fe_link_create() moved the snd_soc_add_dai_link() call before link->dobj members initialization. While it does not affect the latest kernels, the old soc-core.c code in the stable kernels is affected. The snd_soc_add_dai_link() function uses the link->dobj.type member to check, if the link structure is valid. Reorder the link->dobj initialization to make things work again. It's harmless for the recent code (and the structure should be properly initialized before other calls anyway). The problem is in stable linux-5.4.y since version 5.4.11 when the upstream commit 76d270364932 was applied. Fixes: 76d270364932 ("ASoC: topology: Check return value for snd_soc_add_dai_link()") Cc: Dragos Tarcatu <dragos_tarcatu@mentor.com> Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Cc: Mark Brown <broonie@kernel.org> Cc: <stable@vger.kernel.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz> Link: https://lore.kernel.org/r/20200122190752.3081016-1-perex@perex.cz Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
52cf138f5c
commit
09d4a9c83c
@ -1891,6 +1891,10 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
||||
link->num_codecs = 1;
|
||||
link->num_platforms = 1;
|
||||
|
||||
link->dobj.index = tplg->index;
|
||||
link->dobj.ops = tplg->ops;
|
||||
link->dobj.type = SND_SOC_DOBJ_DAI_LINK;
|
||||
|
||||
if (strlen(pcm->pcm_name)) {
|
||||
link->name = kstrdup(pcm->pcm_name, GFP_KERNEL);
|
||||
link->stream_name = kstrdup(pcm->pcm_name, GFP_KERNEL);
|
||||
@ -1927,9 +1931,6 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
||||
goto err;
|
||||
}
|
||||
|
||||
link->dobj.index = tplg->index;
|
||||
link->dobj.ops = tplg->ops;
|
||||
link->dobj.type = SND_SOC_DOBJ_DAI_LINK;
|
||||
list_add(&link->dobj.list, &tplg->comp->dobj_list);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user