diff options
author | Takashi Iwai <tiwai@suse.de> | 2018-08-30 15:13:16 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2018-08-30 15:21:57 +0200 |
commit | 16037643969e095509cd8446a3f8e406a6dc3a2c (patch) | |
tree | 382e753b05809a8395d2d365d5a1d0a34a3bd8f0 /sound/soc/bcm/bcm2835-i2s.c | |
parent | Linux 4.19-rc1 (diff) | |
download | linux-16037643969e095509cd8446a3f8e406a6dc3a2c.tar.xz linux-16037643969e095509cd8446a3f8e406a6dc3a2c.zip |
ALSA: hda - Fix cancel_work_sync() stall from jackpoll work
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>
Diffstat (limited to 'sound/soc/bcm/bcm2835-i2s.c')
0 files changed, 0 insertions, 0 deletions