ASoC: SOF: core: harden shutdown helper
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Mon, 22 Mar 2021 16:37:22 +0000 (11:37 -0500)
committerMark Brown <broonie@kernel.org>
Tue, 23 Mar 2021 17:14:25 +0000 (17:14 +0000)
commit91ec48f540f83022377723a774a0a37a630801af
treec5f67e06b50768364ece532f9b348821c5f21dc7
parent927280909fa7d8e61596800d82f18047c6cfbbe4
ASoC: SOF: core: harden shutdown helper

When the probe is handled in a workqueue, we must use
cancel_work_sync() in the shutdown helper to avoid possible race
conditions.

We must also take care of possible errors happening in a probe
workqueue or during pm_runtime resume (called e.g. before shutdown for
PCI devices). We should really only try to access hardware registers
and initiate IPCs if the DSP is fully booted.

Fixes: daff7f1478e12 ("ASoC: SOF: add snd_sof_device_shutdown() helper for shutdown")
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Libin Yang <libin.yang@intel.com>
Link: https://lore.kernel.org/r/20210322163728.16616-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/core.c