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
--
Jaroslav Kysela <perex@xxxxxxxx>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.