[alsa-devel] regarding references taken on platform and codec driver modules

Koul, Vinod vinod.koul at intel.com
Thu Jan 6 10:11:29 CET 2011


> During the testing codec driver probe was failing and this results in wrong
> reference of platform driver .
> 
> On investigating the issue is in soc_bind_dai_link()
> 
> It takes the reference of cpu_dai and adds the dai in the runtime structure.
> But since the codec was not found these references are kept and modules cant be
> unloaded.
> 
> Now thinking on this and other reference patch recently applied, IMO we can
> instead of taking the module reference check if cpu_dai is probed.
> If probed then only go ahead otherwise return error
> 
This won't work either as cpu_dai is probed after bind_dai_link()

This issue is on removal of soc_remove() it doesn't free up the reference if the card is not instantiated
So in case one of the probes fails we should handle this in soc_remove in else for instantated
 
		    if (rtd->codec->probed)
                        module_put(rtd->codec->dev->driver->owner);
                if (rtd->platform->probed)
                        module_put(rtd->platform->dev->driver->owner);
                for (i = 0; i < card->num_rtd; i++)
                        module_put(rtd[i].cpu_dai->dev->driver->owner);

Would this be the correct way to solve this?

~Vinod


More information about the Alsa-devel mailing list