On Wed, 10 Jan 2024 02:27:39 +0100, Kuninori Morimoto wrote:
Hi Mark
We can use devm_snd_soc_register_card() instead of snd_soc_register_card(), and is possible to ignore snd_soc_unregister_card().
I haven't looked through all code changes, but in general, be careful when the driver is releasing something else than the devres-managed stuff. Namely, the devres stuff is released *after* the call of remove callback.
For example, in your patch for cirrus driver:
static void edb93xx_remove(struct platform_device *pdev) { - struct snd_soc_card *card = platform_get_drvdata(pdev); - - snd_soc_unregister_card(card); ep93xx_i2s_release(); }
This will end up with different call orders of soc-unregister and ep93xx_i2s_release(). This kind of changes may easily be a hidden source of UAF.
Takashi