From 5761a1aa23eb36d8521eeeb64cbcb4cdf2bec208 Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Thu, 12 Nov 2020 15:08:42 +0800 Subject: MLK-24966 ASoC: fsl_dsp: Fix kernel crash when DSP has no response When DSP has no response with cplay and try to force exit, kernel met crash. Reason is kernel locks a mutex proxy->lock twice then kernel crash. Use MU_SendMessageTimeout instead MU_SendMessage then kernel can release the mutex. Signed-off-by: Zhang Peng --- sound/soc/fsl/fsl_dsp_proxy.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sound/soc/fsl/fsl_dsp_proxy.c') diff --git a/sound/soc/fsl/fsl_dsp_proxy.c b/sound/soc/fsl/fsl_dsp_proxy.c index 73e6e4cb6147..d907b9d077dc 100644 --- a/sound/soc/fsl/fsl_dsp_proxy.c +++ b/sound/soc/fsl/fsl_dsp_proxy.c @@ -144,7 +144,7 @@ u32 icm_intr_send(struct xf_proxy *proxy, u32 msg) struct fsl_dsp *dsp_priv = container_of(proxy, struct fsl_dsp, proxy); - MU_SendMessage(dsp_priv->mu_base_virtaddr, 0, msg); + MU_SendMessageTimeout(dsp_priv->mu_base_virtaddr, 0, msg, 800); return 0; } @@ -161,9 +161,9 @@ int icm_intr_extended_send(struct xf_proxy *proxy, if (msghdr.size != 8) dev_err(dev, "too much ext msg\n"); - MU_SendMessage(dsp_priv->mu_base_virtaddr, 1, ext_msg->phys); - MU_SendMessage(dsp_priv->mu_base_virtaddr, 2, ext_msg->size); - MU_SendMessage(dsp_priv->mu_base_virtaddr, 0, msg); + MU_SendMessageTimeout(dsp_priv->mu_base_virtaddr, 1, ext_msg->phys, 800); + MU_SendMessageTimeout(dsp_priv->mu_base_virtaddr, 2, ext_msg->size, 800); + MU_SendMessageTimeout(dsp_priv->mu_base_virtaddr, 0, msg, 800); return 0; } -- cgit v1.2.3