From cd8da87618b23a0b7a510f9c541b67950d202a30 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Tue, 6 Jul 2021 15:18:23 +0530 Subject: [PATCH] dsp: q6asm: Fix spinlock corruption during q6asm_callback Use spin_unlock_irqrestore while unlocking mutex being locked with spin_lock_irqsave to prevent spinlock corruption. Change-Id: I47def0516348de7caf07134167f4962bf87bcc08 Signed-off-by: Vatsal Bucha --- dsp/q6asm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dsp/q6asm.c b/dsp/q6asm.c index 7f0c53f7b6e2..e18475f4f49a 100644 --- a/dsp/q6asm.c +++ b/dsp/q6asm.c @@ -2562,7 +2562,8 @@ static int32_t q6asm_callback(struct apr_client_data *data, void *priv) if (payload_size > UINT_MAX - sizeof(struct msm_adsp_event_data)) { pr_err("%s: payload size = %d exceeds limit.\n", __func__, payload_size); - spin_unlock(&(session[session_id].session_lock)); + spin_unlock_irqrestore( + &(session[session_id].session_lock), flags); return -EINVAL; }