projects
/
wrapfs-4.13.y.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c06539b
)
ALSA: hda/ca0132 - Avoid endless loop
author
Takashi Iwai
<tiwai@suse.de>
Fri, 13 Dec 2019 08:51:10 +0000
(09:51 +0100)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Tue, 31 Dec 2019 11:36:46 +0000
(12:36 +0100)
commit
cb04fc3b6b076f67d228a0b7d096c69ad486c09c
upstream.
Introduce a timeout to dspio_clear_response_queue() so that it won't
be caught in an endless loop even if the hardware doesn't respond
properly.
Fixes: a73d511c4867 ("ALSA: hda/ca0132: Add unsol handler for DSP and jack detection")
Cc: <stable@vger.kernel.org>
Link:
https://lore.kernel.org/r/20191213085111.22855-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/pci/hda/patch_ca0132.c
patch
|
blob
|
history
diff --git
a/sound/pci/hda/patch_ca0132.c
b/sound/pci/hda/patch_ca0132.c
index e0610982a1702ff1146448491fbf6cc3595eb1d6..92f5f452bee2bdcd33d01ac591c9de92b10b5215 100644
(file)
--- a/
sound/pci/hda/patch_ca0132.c
+++ b/
sound/pci/hda/patch_ca0132.c
@@
-1300,13
+1300,14
@@
struct scp_msg {
static void dspio_clear_response_queue(struct hda_codec *codec)
{
+ unsigned long timeout = jiffies + msecs_to_jiffies(1000);
unsigned int dummy = 0;
- int status
= -1
;
+ int status;
/* clear all from the response queue */
do {
status = dspio_read(codec, &dummy);
- } while (status == 0);
+ } while (status == 0
&& time_before(jiffies, timeout)
);
}
static int dspio_get_response_data(struct hda_codec *codec)