]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: hdac_hda: fix race in device removal
authorKai Vehmanen <kai.vehmanen@linux.intel.com>
Fri, 1 Nov 2019 17:06:35 +0000 (12:06 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 4 Nov 2019 13:21:15 +0000 (13:21 +0000)
commitd37565fd817cbbf8fe9ea2877805bc1e69184e1b
tree7a82b787c530ecea7f1f08775eb81ef358d10179
parent54174a301fbc6c62f2e4cce0e029086cc338a5a7
ASoC: hdac_hda: fix race in device removal

When ASoC card instance is removed containing a HDA codec,
hdac_hda_codec_remove() may run in parallel with codec resume.
This will cause problems if the HDA link is freed with
snd_hdac_ext_bus_link_put() while the codec is still in
middle of its resume process.

To fix this, change the order such that pm_runtime_disable()
is called before the link is freed. This will ensure any
pending runtime PM action is completed before proceeding
to free the link.

This issue can be easily hit with e.g. SOF driver by loading and
unloading the drivers.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191101170635.26389-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/hdac_hda.c