Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2019-11-05 14:54:13 +0100
committerTakashi Iwai <tiwai@suse.de>2019-11-05 14:54:13 +0100
commita38356633d76b76de8597908f39e7cd34e57bdf8 (patch)
tree80c37a22636f005acb1da0e586e4bdbbd47c8cc3
parent7b0a0d1c3323ffe96635a84c589b5f9b44226683 (diff)
ALSA: hda/ca0132 - Fix possible workqueue stall (bsc#1155836).
-rw-r--r--patches.suse/ALSA-hda-ca0132-Fix-possible-workqueue-stall.patch45
-rw-r--r--series.conf1
2 files changed, 46 insertions, 0 deletions
diff --git a/patches.suse/ALSA-hda-ca0132-Fix-possible-workqueue-stall.patch b/patches.suse/ALSA-hda-ca0132-Fix-possible-workqueue-stall.patch
new file mode 100644
index 0000000000..5588395b3d
--- /dev/null
+++ b/patches.suse/ALSA-hda-ca0132-Fix-possible-workqueue-stall.patch
@@ -0,0 +1,45 @@
+From 15c2b3cc09a31620914955cb2a89c277c18ee999 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 5 Nov 2019 14:43:16 +0100
+Subject: [PATCH] ALSA: hda/ca0132 - Fix possible workqueue stall
+References: bsc#1155836
+Git-commit: 15c2b3cc09a31620914955cb2a89c277c18ee999
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+Patch-mainline: Queued in subsystem maintainer repository
+
+The unsolicited event handler for the headphone jack on CA0132 codec
+driver tries to reschedule the another delayed work with
+cancel_delayed_work_sync(). It's no good idea, unfortunately,
+especially after we changed the work queue to the standard global
+one; this may lead to a stall because both works are using the same
+global queue.
+
+Fix it by dropping the _sync but does call cancel_delayed_work()
+instead.
+
+Fixes: 993884f6a26c ("ALSA: hda/ca0132 - Delay HP amp turnon.")
+Buglink: https://bugzilla.suse.com/show_bug.cgi?id=1155836
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20191105134316.19294-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/pci/hda/patch_ca0132.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
+index 6d1fb7c11f17..b7a1abb3e231 100644
+--- a/sound/pci/hda/patch_ca0132.c
++++ b/sound/pci/hda/patch_ca0132.c
+@@ -7604,7 +7604,7 @@ static void hp_callback(struct hda_codec *codec, struct hda_jack_callback *cb)
+ /* Delay enabling the HP amp, to let the mic-detection
+ * state machine run.
+ */
+- cancel_delayed_work_sync(&spec->unsol_hp_work);
++ cancel_delayed_work(&spec->unsol_hp_work);
+ schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500));
+ tbl = snd_hda_jack_tbl_get(codec, cb->nid);
+ if (tbl)
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index 27a63bd421..670387af16 100644
--- a/series.conf
+++ b/series.conf
@@ -2858,6 +2858,7 @@
patches.suse/mm-pcpu-Make-zone-pcp-updates-and-reset-internal-to-the-mm.patch
patches.suse/autonuma-fix-watermark-checking-in-migrate_balanced_pgdat.patch
patches.suse/autonuma-reduce-cache-footprint-when-scanning-page-tables.patch
+ patches.suse/ALSA-hda-ca0132-Fix-possible-workqueue-stall.patch
########################################################
# kbuild/module infrastructure fixes