Hi Mark. Sorry, this is v2 patch. - Subject: Re: [RFC][PATCH] ASoC: soc-core: verify Sound Card normality + Subject: Re: [RFC][PATCH v2] ASoC: soc-core: verify Sound Card normality > Current ALSA SoC Sound Card basically consists of CPU/Codec/Platform > components. If system uses Kernel modules, we can disable these drivers > by using rmmod command. In such case, we can't disable > CPU/Codec/Platform driver without disabling Sound Card driver. > > But on the other hand, we can disable these drivers by using unbind > command. In such case, we can disable these drivers randomly. > In this case, we can create dirty Sound Card which is missing necessary > components. > > (1) If user disabled Sound Card first, but did nothing to other drivers, > user can't use Sound because Sound Card is no longer exists. > (2) If user disabled CPU/Codec/Platform driver randomly, but did nothing > to Sound Card, user still be able to use Sound Card, because dirty Sound > Card still exists. In this case, Sound system will be crashed if user > started sound playback/capture. But we can't block such random unbind > now. > > To avoid Sound Card crash in (2) case, we need to unregister Sound Card > whenever CPU/Codec/Platform component were unregistered. > This patch solves this issue. > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > --- > sound/soc/soc-core.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c > index 07e4eec..52760bd 100644 > --- a/sound/soc/soc-core.c > +++ b/sound/soc/soc-core.c > @@ -3236,6 +3236,11 @@ static void snd_soc_component_cleanup(struct snd_soc_component *component) > > static void snd_soc_component_del_unlocked(struct snd_soc_component *component) > { > + struct snd_soc_card *card = component->card; > + > + if (card) > + snd_soc_unregister_card(card); > + > list_del(&component->list); > } > > -- > 1.9.1 >