[<prev] [next>] [day] [month] [year] [list]
Message-ID: <s5hd19lertr.wl-tiwai@suse.de>
Date: Fri, 30 Jun 2017 11:40:48 +0200
From: Takashi Iwai <tiwai@...e.de>
To: Linus Torvalds <torvalds@...uxfoundation.org>
Cc: linux-kernel@...r.kernel.org
Subject: [GIT PULL] sound fixes for 4.12
Linus,
please pull sound fixes for v4.12 from:
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-4.12
The topmost commit is d94815f917da770d42c377786dc428f542e38f71
----------------------------------------------------------------
sound fixes for 4.12
Two last-minute HD-audio fixes.
----------------------------------------------------------------
Hui Wang (1):
ALSA: hda - set input_path bitmap to zero after moving it to new place
Takashi Iwai (1):
ALSA: hda - Fix endless loop of codec configure
---
sound/pci/hda/hda_codec.h | 2 ++
sound/pci/hda/hda_controller.c | 8 ++++++--
sound/pci/hda/hda_generic.c | 1 +
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index d6fb2d5d01a7..60ce1cfc300f 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -295,6 +295,8 @@ struct hda_codec {
#define list_for_each_codec(c, bus) \
list_for_each_entry(c, &(bus)->core.codec_list, core.list)
+#define list_for_each_codec_safe(c, n, bus) \
+ list_for_each_entry_safe(c, n, &(bus)->core.codec_list, core.list)
/* snd_hda_codec_read/write optional flags */
#define HDA_RW_NO_RESPONSE_FALLBACK (1 << 0)
diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
index 3715a5725613..1c60beb5b70a 100644
--- a/sound/pci/hda/hda_controller.c
+++ b/sound/pci/hda/hda_controller.c
@@ -1337,8 +1337,12 @@ EXPORT_SYMBOL_GPL(azx_probe_codecs);
/* configure each codec instance */
int azx_codec_configure(struct azx *chip)
{
- struct hda_codec *codec;
- list_for_each_codec(codec, &chip->bus) {
+ struct hda_codec *codec, *next;
+
+ /* use _safe version here since snd_hda_codec_configure() deregisters
+ * the device upon error and deletes itself from the bus list.
+ */
+ list_for_each_codec_safe(codec, next, &chip->bus) {
snd_hda_codec_configure(codec);
}
return 0;
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 2842c82363c0..71545b56b4c8 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -3174,6 +3174,7 @@ static int check_dyn_adc_switch(struct hda_codec *codec)
spec->input_paths[i][nums]);
spec->input_paths[i][nums] =
spec->input_paths[i][n];
+ spec->input_paths[i][n] = 0;
}
}
nums++;
Powered by blists - more mailing lists