[alsa-devel] [RFC][PATCH] ASoC: soc-core: verify Sound Card normality

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Apr 3 10:28:23 CEST 2017


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 at renesas.com>
> ---
>  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
> 


More information about the Alsa-devel mailing list