Dne 22. 01. 20 v 21:25 Mark Brown napsal(a):
On Wed, Jan 22, 2020 at 01:28:57PM -0600, Pierre-Louis Bossart wrote:
On 1/22/20 1:07 PM, Jaroslav Kysela wrote:
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.
I am not following. Is this a fix for linux-5.4-y only, or is it needed on Mark's tree? In the latter case, what is broken? We've been using Mark's tree without issues, wondering what we missed?
He's saying it's a fix for stable but it's just a cleanup and robustness improvement in current kernels - when the patch 76d270364932 (ASoC: topology: Check return value for snd_soc_add_dai_link()) was backported by the bot the bot missed some other context which triggered bugs.
Exactly. It's because the commit 237d19080cd37e1ccf5462e63d8577d713f6da46 ("ASoC: soc-core: remove topology specific operation") removed the link->dobj checks, but this commit was not picked to the stable kernels.
The initialization reordering is fine for all kernels (and makes sense), so I would like to apply it everywhere.
Thanks, Jaroslav