summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_dsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/fsl/fsl_dsp.c')
-rw-r--r--sound/soc/fsl/fsl_dsp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_dsp.c b/sound/soc/fsl/fsl_dsp.c
index 2c7976ffdb09..b3bcf21730d2 100644
--- a/sound/soc/fsl/fsl_dsp.c
+++ b/sound/soc/fsl/fsl_dsp.c
@@ -430,8 +430,12 @@ int fsl_dsp_close_func(struct xf_client *client)
/* If device is free, reinitialize the resource of
* dsp driver and framework
*/
- if (atomic_long_read(&dsp_priv->refcnt) <= 0)
+ if (atomic_long_read(&dsp_priv->refcnt) <= 0) {
+ /* we are closing up, wait for proxy processing
+ * function to finish */
+ cancel_work_sync(&dsp_priv->proxy.work);
resource_release(dsp_priv);
+ }
mutex_unlock(&dsp_priv->dsp_mutex);