]> git.baikalelectronics.ru Git - kernel.git/commit
ALSA: hda: Fix potential race at unregistration and unsol events
authorTakashi Iwai <tiwai@suse.de>
Mon, 19 Jun 2017 15:49:48 +0000 (17:49 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Jun 2017 05:53:57 +0000 (07:53 +0200)
commit642312a643c757a8fa511e7cea6f1dfd19ca3a51
treedfb85ea2e1ee4ff8134aef89b7ba933d9f2920d6
parent6bf4c01890109bdaf0fd1a17d4768e8e08a86850
ALSA: hda: Fix potential race at unregistration and unsol events

When the codec device is unregistered / freed, it may release the
resource while being used in an unsolicited event like the jack
detection work.  This leads to use-after-free.

The fix here is to unregister the device at first, i.e. removing the
codec from the list, then flushing the pending works to assure that
all unsol events are gone.  After this point, we're free from
accessing the codec via unsol events, thus can release the resources
gracefully.

The issue was spotted originally by Intel CI, but it couldn't be
reproduced reliably by its nature.  So let's hope this fix really
addresses the whole issues.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196045
Reported-by: Martin Peres <martin.peres@free.fr>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/hdac_bus.c
sound/hda/hdac_device.c