Skip to contentSkip to conversation

Patch "ALSA: hda: Abort capability probe at invalid register read" has been added to the 4.13-stable tree

PATCH [email protected] 1 participant 1 message Oct 24, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ALSA: hda: Abort capability probe at invalid register read

to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
alsa-hda-abort-capability-probe-at-invalid-register-read.patch
and it can be found in the queue-4.13 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 098a0a62c1554f5a3813ef1b8539563214ada8f6 Mon Sep 17 00:00:00 2001

From: Takashi Iwai <[email protected]>
Date: Tue, 17 Oct 2017 16:38:55 +0200
Subject: ALSA: hda: Abort capability probe at invalid register read

From: Takashi Iwai <[email protected]>

commit 098a0a62c1554f5a3813ef1b8539563214ada8f6 upstream.

The loop in snd_hdac_bus_parse_capabilities() may go to nirvana when it hits an invalid register value read:

 BUG: unable to handle kernel paging request at ffffad5dc41f3fff
 IP: pci_azx_readl+0x5/0x10 [snd_hda_intel]
 Call Trace:
  snd_hdac_bus_parse_capabilities+0x3c/0x1f0 [snd_hda_core]
  azx_probe_continue+0x7d5/0x940 [snd_hda_intel]
  .....

This happened on a new Intel machine, and we need to check the value and abort the loop accordingly.

[Note: the fixes tag below indicates only the commit where this patch
can be applied; the original problem was introduced even before that commit]

Fixes 6720b38420a0 ("ALSA: hda - move bus_parse_capabilities to core")
---
 sound/hda/hdac_controller.c |    5 +++++
 1 file changed, 5 insertions(+)
sound/hda/hdac_controller.c +5 -0
@@ -284,6 +284,11 @@ int snd_hdac_bus_parse_capabilities(stru
 		dev_dbg(bus->dev, "HDA capability ID: 0x%x\n",
 			(cur_cap & AZX_CAP_HDR_ID_MASK) >> AZX_CAP_HDR_ID_OFF);
 
+		if (cur_cap == -1) {
+			dev_dbg(bus->dev, "Invalid capability reg read\n");
+			break;
+		}
+
 		switch ((cur_cap & AZX_CAP_HDR_ID_MASK) >> AZX_CAP_HDR_ID_OFF) {
 		case AZX_ML_CAP_ID:
 			dev_dbg(bus->dev, "Found ML capability\n");

Patches currently in stable-queue which might be from [email protected] are

queue-4.13/alsa-hda-remove-superfluous-added-by-printk-conversion.patch queue-4.13/alsa-hda-abort-capability-probe-at-invalid-register-read.patch queue-4.13/alsa-usb-audio-add-native-dsd-support-for-pro-ject-pre-box-s2-digital.patch queue-4.13/alsa-seq-enable-use-locking-in-all-configurations.patch