diff options
Diffstat (limited to 'sound/soc/fsl/fsl_dsp.c')
-rw-r--r-- | sound/soc/fsl/fsl_dsp.c | 6 |
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); |