sound/pci/intel8x0.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
From: Xu Rao <raoxu@uniontech.com>
When S/PDIF uses the AC-link, spdif_idx is negative and the AC97
PCM assignment drops its last descriptor. On ICH4 this leaves five
entries, but PCM2IN and MIC2 still use entries four and five.
Opening MIC2 then reads beyond the allocated descriptor array.
Keep all six descriptors on ICH4 so the capture stream indices stay
valid. The S/PDIF descriptor occupies its fixed position but does
not create a separate hardware PCM when S/PDIF uses the AC-link.
Other controller types retain their existing descriptor counts.
Signed-off-by: Xu Rao <raoxu@uniontech.com>
---
Changes in v2:
- Group the S/PDIF descriptor count adjustment with the non-ICH4 case,
as suggested by Takashi Iwai.
sound/pci/intel8x0.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 339024182a26..69fe42747750 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -2289,10 +2289,11 @@ static int snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock,
pbus->isdin = 1;
/* find the available PCM streams */
i = ARRAY_SIZE(ac97_pcm_defs);
- if (chip->device_type != DEVICE_INTEL_ICH4)
+ if (chip->device_type != DEVICE_INTEL_ICH4) {
i -= 2; /* do not allocate PCM2IN and MIC2 */
- if (chip->spdif_idx < 0)
- i--; /* do not allocate S/PDIF */
+ if (chip->spdif_idx < 0)
+ i--; /* do not allocate S/PDIF */
+ }
err = snd_ac97_pcm_assign(pbus, i, ac97_pcm_defs);
if (err < 0)
goto __err;
--
2.50.1
On Thu, 05 Nov 2026 02:46:42 +0100, raoxu wrote: > > From: Xu Rao <raoxu@uniontech.com> > > When S/PDIF uses the AC-link, spdif_idx is negative and the AC97 > PCM assignment drops its last descriptor. On ICH4 this leaves five > entries, but PCM2IN and MIC2 still use entries four and five. > Opening MIC2 then reads beyond the allocated descriptor array. > > Keep all six descriptors on ICH4 so the capture stream indices stay > valid. The S/PDIF descriptor occupies its fixed position but does > not create a separate hardware PCM when S/PDIF uses the AC-link. > Other controller types retain their existing descriptor counts. > > Signed-off-by: Xu Rao <raoxu@uniontech.com> Applied now. Thanks. Takashi
© 2016 - 2026 Red Hat, Inc.