--- /dev/null
+From fdbb53d318aa94a094434e5f226617f0eb1e8f22 Mon Sep 17 00:00:00 2001
+From: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
+Date: Fri, 17 Oct 2025 09:52:56 +0100
+Subject: ASoC: qdsp6: q6asm: do not sleep while atomic
+
+From: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
+
+commit fdbb53d318aa94a094434e5f226617f0eb1e8f22 upstream.
+
+For some reason we ended up kfree between spinlock lock and unlock,
+which can sleep.
+
+move the kfree out of spinlock section.
+
+Fixes: a2a5d30218fd ("ASoC: qdsp6: q6asm: Add support to memory map and unmap")
+Cc: Stable@vger.kernel.org
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
+Link: https://patch.msgid.link/20251017085307.4325-2-srinivas.kandagatla@oss.qualcomm.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/qcom/qdsp6/q6asm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/qcom/qdsp6/q6asm.c
++++ b/sound/soc/qcom/qdsp6/q6asm.c
+@@ -376,9 +376,9 @@ static void q6asm_audio_client_free_buf(
+
+ spin_lock_irqsave(&ac->lock, flags);
+ port->num_periods = 0;
++ spin_unlock_irqrestore(&ac->lock, flags);
+ kfree(port->buf);
+ port->buf = NULL;
+- spin_unlock_irqrestore(&ac->lock, flags);
+ }
+
+ /**