]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: qdsp6: q6asm: do not sleep while atomic
authorSrinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Fri, 17 Oct 2025 08:52:56 +0000 (09:52 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 20 Oct 2025 01:39:17 +0000 (02:39 +0100)
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>
sound/soc/qcom/qdsp6/q6asm.c

index 06a802f9dba5c3a4677b5078d3bbc4c7dc4cae77..67e9ca18883cdfd1ccd931083957b5d0978d1700 100644 (file)
@@ -377,9 +377,9 @@ static void q6asm_audio_client_free_buf(struct audio_client *ac,
 
        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);
 }
 
 /**