Unverified Commit 3c99c9f0 authored by matteo.cotifava's avatar matteo.cotifava Committed by Mark Brown
Browse files

ASoC: soc-core: drop delayed_work_pending() check before flush



The delayed_work_pending() check before flush_delayed_work() in
soc_free_pcm_runtime() is unnecessary and racy. flush_delayed_work()
is safe to call unconditionally - it is a no-op when no work is
pending. Remove the check.

The original check was added by commit 9c9b6520 ("ASoC: core:
only flush inited work during free") but delayed_work_pending()
followed by flush_delayed_work() has a time-of-check/time-of-use
window where work can become pending between the two calls.

Fixes: 9c9b6520 ("ASoC: core: only flush inited work during free")
Signed-off-by: default avatarMatteo Cotifava <cotifavamatteo@gmail.com>
Link: https://patch.msgid.link/20260309215412.545628-2-cotifavamatteo@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent facfdef6
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -462,7 +462,6 @@ static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)

	list_del(&rtd->list);

	if (delayed_work_pending(&rtd->delayed_work))
	flush_delayed_work(&rtd->delayed_work);
	snd_soc_pcm_component_free(rtd);