[PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Jul 30 18:58:25 CEST 2020


>>> When the card was uninstalled with modprobe -r, the da7219 codec was not
>>> removed, only component da7219_remove() is invoked, do you suggest the
>>> component driver probe and remove has to happen with da7219_i2_driver probe
>>> and remove together? Thanks for the code review.
> 
>> Well as far as I understand it the the devm_* allocated resources are tied to
>> the i2c dev. If I'm correct then unless that's removed then those resources
>> won't be freed. If this is a valid scenario then we would probably have to look
>> at avoiding all devm_ calls in the da7219_probe() code as they wouldn't be
>> released when doing what you are here.
> 
>> Mark, what's your take on this? Am I missing something obvious?
> 
> You're not missing anything, you shouldn't be doing devm allocations at
> the CODEC level only at the device model level.  I'm somewhat confused
> why you would be registering clocks at the device model level TBH.

I am afraid we have quite a few codec drivers used in x86/ACPI platforms 
using devm_ clk functions at the component probe level...see e.g.:

da7213, da7218, da7219, es8316, es8328, max98090, max98095, rt5514, 
rt5616, rt5640, rt5682, tlk320aic32x4

some do even worse: nau8825, tlv320aic32x4 call devm_ functions in 
set_sysclk.

The module load/unload tests used for SOF remove all the drivers, so as 
Adam was saying this should not happen if you remove the codec driver.

It already took us quite a bit of effort to make sure all resources are 
properly allocated/released. We still have known issues when removing 
the platform driver only, mainly with HDaudio. I wasn't aware of this 
case for I2C codecs, I guess this just made the list of TODO cleanups 
even longer. D'oh!


More information about the Alsa-devel mailing list