android_kernel_oneplus_msm8998/sound
Takashi Iwai c9125a2116 ALSA: hda - Fix cancel_work_sync() stall from jackpoll work
commit 16037643969e095509cd8446a3f8e406a6dc3a2c upstream.

On AMD/ATI controllers, the HD-audio controller driver allows a bus
reset upon the error recovery, and its procedure includes the
cancellation of pending jack polling work as found in
snd_hda_bus_codec_reset().  This works usually fine, but it becomes a
problem when the reset happens from the jack poll work itself; then
calling cancel_work_sync() from the work being processed tries to wait
the finish endlessly.

As a workaround, this patch adds the check of current_work() and
applies the cancel_work_sync() only when it's not from the
jackpoll_work.

This doesn't fix the root cause of the reported error below, but at
least, it eases the unexpected stall of the whole system.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200937
Cc: <stable@vger.kernel.org>
Cc: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-19 22:48:55 +02:00
..
aoa
arm
atmel
core ALSA: memalloc: Don't exceed over the requested size 2018-08-22 07:48:36 +02:00
drivers ALSA: aloop: Add missing cable lock to ctl API callbacks 2018-05-16 10:06:47 +02:00
firewire ALSA: firewire-digi00x: handle all MIDI messages on streaming packets 2018-03-22 09:23:24 +01:00
hda ALSA: hda: Drop useless WARN_ON() 2018-01-02 20:33:22 +01:00
i2c
isa ALSA: msnd: Optimize / harden DSP and MIDI loops 2017-09-13 14:09:46 -07:00
mips
oss
parisc
pci ALSA: hda - Fix cancel_work_sync() stall from jackpoll work 2018-09-19 22:48:55 +02:00
pcmcia ALSA: vxpocket: Fix invalid endian conversions 2018-08-22 07:48:36 +02:00
ppc ALSA: ppc/awacs: shut up maybe-uninitialized warning 2017-05-08 07:46:01 +02:00
sh
soc ASoC: wm8994: Fix missing break in switch 2018-09-15 09:40:42 +02:00
sparc
spi
synth
usb ALSA: usb-audio: Apply rate limit to warning messages in URB complete callback 2018-08-06 16:24:35 +02:00
ac97_bus.c
Kconfig
last.c
Makefile
sound_core.c
sound_firmware.c