]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoC: amd: acp: Fix possible deadlock
authorDaniel Baluta <daniel.baluta@nxp.com>
Mon, 27 Jan 2025 08:34:22 +0000 (10:34 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 27 Jan 2025 13:35:35 +0000 (13:35 +0000)
On error path, function acp_i2s_set_tdm_slot returns without releasing
the lock and this could result in potential deadlocks in the future.

Error reported by sparse:
sound/soc/amd/acp/acp-i2s.c:95:12: error: context imbalance in
'acp_i2s_set_tdm_slot' - different lock contexts for basic block

Fixes: cd60dec8994c ("ASoC: amd: acp: Refactor TDM slots selction based on acp revision id")
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://patch.msgid.link/20250127083422.20406-1-daniel.baluta@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/acp/acp-i2s.c

index 1f59ee248771cc73283d6e5be0b67a345cc13c49..89e99ed4275a22c6a8c96de1a66deb0111c97b8d 100644 (file)
@@ -181,6 +181,7 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
                        break;
                default:
                        dev_err(dev, "Unknown chip revision %d\n", chip->acp_rev);
+                       spin_unlock_irq(&adata->acp_lock);
                        return -EINVAL;
                }
        }