The .card member of the snd_soc_pcm_runtime structure pointed to by the snd_soc_dai_link.init() argument used to be initialized before the function being called. This has changed, probably unintentionally, after recent refactorings. Since the function implementations are free to make use of this pointer, move its assignment back before the function is called to avoid NULL pointer dereferences.
Created and tested on Amstrad Delta againts linux-2.6.38-rc2
Signed-off-by: Janusz Krzysztofik jkrzyszt@tis.icnet.pl --- Jarkko, I'm not sure if this change won't break anything in your dailess related code path, please verify.
Thanks, Janusz
sound/soc/soc-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- git/sound/soc/soc-core.c.orig 2011-01-31 19:49:29.000000000 +0100 +++ git/sound/soc/soc-core.c 2011-02-02 20:23:10.000000000 +0100 @@ -1449,6 +1449,7 @@ static int soc_post_component_init(struc rtd = &card->rtd_aux[num]; name = aux_dev->name; } + rtd->card = card;
/* machine controls, routes and widgets are not prefixed */ temp = codec->name_prefix; @@ -1471,7 +1472,6 @@ static int soc_post_component_init(struc
/* register the rtd device */ rtd->codec = codec; - rtd->card = card; rtd->dev.parent = card->dev; rtd->dev.release = rtd_release; rtd->dev.init_name = name;