[alsa-devel] Question about struct snd_soc_dai() :: cpu_dai->codec
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Wed Jul 27 05:42:56 CEST 2016
Hi Vinod
> > My current headache is ALSA SoC's each modules (= Card/Codec/CPU/Platform)
> > doesn't care about "unbind/rmmod".
> > For example, if someone unbinded/rmmoded "Codec", Card or other modules
> > doesn't know about it. Thus, user can continue to use this sound card,
> > and kernel will be Oops.
>
> Are you sure about this? Have you tried removing a module?
>
> During card probe, asoc will hold a reference to the component. See the
> calls to try_module_get(). This will prevent from unloading under normal
> cases.
Very easy pseudo code is like this
rtd->card = card;
rtd->cpu = cpu;
rtd->codec = codec;
rtd->platform = platform
Here, card/cpu/codec/platform are SoC device/driver,
and "ALSA sound card" is using this rtd.
Now, I can unbind/rmmod each of them (for example codec).
But rtd (= ALSA sound card) doesn't know about it.
Thus, rtd will access to invalid pointer after unbind/rmmod.
More information about the Alsa-devel
mailing list