Commit 9d30937a authored by Jaroslav Kysela's avatar Jaroslav Kysela Committed by Takashi Iwai

ALSA: hda_intel: more strict alc880_parse_auto_config dig_nid checking

On some IbexPeak systems with ALC889A errors like "azx_get_response
timeout, switching to polling mode: last cmd=0xaf9f000b" are produced,
because non-existent codec #10 is wrongly accessed.

The problem is that snd_hda_get_connections() returns out-of-range result
for NID 0x1c (something like 0xf8f9 or 0xffff).

This patch adds a check to alc880_parse_auto_config() to avoid using
of this out-of-range NIDs. A better fix maybe to improve
snd_hda_get_connections() routine to check for valid NID ranges if
NIDs are expected as result.
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 005b1076
...@@ -4505,6 +4505,12 @@ static int alc880_parse_auto_config(struct hda_codec *codec) ...@@ -4505,6 +4505,12 @@ static int alc880_parse_auto_config(struct hda_codec *codec)
&dig_nid, 1); &dig_nid, 1);
if (err < 0) if (err < 0)
continue; continue;
if (dig_nid > 0x7f) {
printk(KERN_ERR "alc880_auto: invalid dig_nid "
"connection 0x%x for NID 0x%x\n", dig_nid,
spec->autocfg.dig_out_pins[i]);
continue;
}
if (!i) if (!i)
spec->multiout.dig_out_nid = dig_nid; spec->multiout.dig_out_nid = dig_nid;
else { else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment