ASoC: soc-devres: add devm_snd_soc_register_dai()
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Fri, 12 Jun 2020 20:59:37 +0000 (15:59 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 15 Jun 2020 13:15:11 +0000 (14:15 +0100)
commit0fae253af563cf5d1f5dc651d520c3eafd74f183
treec0c6e834098bdad386471b440bdd60e74c261679
parentb287a6d9723c601dd947f1c27d4cc0192e384a5a
ASoC: soc-devres: add devm_snd_soc_register_dai()

The registration of DAIs may be done at two distinct times, once
during a component registration and later when loading a
topology. Since devm_ managed resources are freed in the reverse order
they were allocated, when a component starts unregistering DAIs by
walking through the DAI list, the memory allocated for the
topology-registered DAIs was freed already, which leads to 100%
reproducible KASAN use-after-free reports.

This patch suggests a new devm_ function to force the DAI list to be
updated prior to freeing the memory chunks referenced by the list
pointers.

Suggested-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
BugLink: https://github.com/thesofproject/linux/issues/2186
Link: https://lore.kernel.org/r/20200612205938.26415-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-devres.c