]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: hda: Disable jack polling at shutdown
authorTakashi Iwai <tiwai@suse.de>
Mon, 23 Jun 2025 13:14:30 +0000 (15:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:30:26 +0000 (18:30 +0200)
[ Upstream commit 1adcbdf54f76e1004bdf71df4eb1888c26e7ad06 ]

Although the jack polling is canceled at shutdown in
snd_hda_codec_shutdown(), it might be still re-triggered when the work
is being processed at cancel_delayed_work_sync() call.  This may
result in the unexpected hardware access that should have been already
disabled.

For assuring to stop the jack polling, clear codec->jackpoll_interval
at shutdown.

Reported-by: Joakim Zhang <joakim.zhang@cixtech.com>
Closes: https://lore.kernel.org/20250619020844.2974160-4-joakim.zhang@cixtech.com
Tested-by: Joakim Zhang <joakim.zhang@cixtech.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250623131437.10670-2-tiwai@suse.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/pci/hda/hda_codec.c

index cb3bba7eed4f3006888583fdd48def86f3282b5f..db2487cfd5da9d473bd10c3f3f7d02e69c146297 100644 (file)
@@ -3038,6 +3038,7 @@ void snd_hda_codec_shutdown(struct hda_codec *codec)
        if (!codec->core.registered)
                return;
 
+       codec->jackpoll_interval = 0; /* don't poll any longer */
        cancel_delayed_work_sync(&codec->jackpoll_work);
        list_for_each_entry(cpcm, &codec->pcm_list_head, list)
                snd_pcm_suspend_all(cpcm->pcm);