linux_dsm_epyc7002/sound
Takashi Iwai f495222e28 ALSA: hda - Register irq handler after the chip initialization
Currently the IRQ handler in HD-audio controller driver is registered
before the chip initialization.  That is, we have some window opened
between the azx_acquire_irq() call and the CORB/RIRB setup.  If an
interrupt is triggered in this small window, the IRQ handler may
access to the uninitialized RIRB buffer, which leads to a NULL
dereference Oops.

This is usually no big problem since most of Intel chips do register
the IRQ via MSI, and we've already fixed the order of the IRQ
enablement and the CORB/RIRB setup in the former commit b61749a89f
("sound: enable interrupt after dma buffer initialization"), hence the
IRQ won't be triggered in that room.  However, some platforms use a
shared IRQ, and this may allow the IRQ trigger by another source.

Another possibility is the kdump environment: a stale interrupt might
be present in there, the IRQ handler can be falsely triggered as well.

For covering this small race, let's move the azx_acquire_irq() call
after hda_intel_init_chip() call.  Although this is a bit radical
change, it can cover more widely than checking the CORB/RIRB setup
locally in the callee side.

Reported-by: Liwei Song <liwei.song@windriver.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2019-04-30 12:18:28 +02:00
..
ac97
aoa
arm
atmel
core ALSA: core: Don't refer to snd_cards array directly 2019-04-17 07:16:15 +02:00
drivers ALSA: aloop: Support S24 sample formats 2019-03-25 16:39:18 +01:00
firewire ALSA: firewire-lib: use 8 byte header for IR context to get isochronous cycle 2019-03-18 14:50:35 +01:00
hda ALSA: hda: Initialize ext-bus-specific fields in snd_hdac_bus_init(), too 2019-04-13 10:10:26 +02:00
i2c
isa ALSA: gus: fix misuse of %x 2019-04-28 08:25:18 +02:00
mips
oss
parisc
pci ALSA: hda - Register irq handler after the chip initialization 2019-04-30 12:18:28 +02:00
pcmcia
ppc ALSA: ps3: Remove set but not used variables 'start_vaddr' and 'pcm_index' 2019-04-17 21:17:54 +02:00
sh
soc ASoC: hdac_hda: overwrite hdev type to HDA_DEV_ASOC 2019-04-29 09:12:09 +02:00
sparc
spi
synth ALSA: emux: Add support of loading GUS-patch 2019-03-26 17:32:02 +01:00
usb ALSA: usx2y: fix a double free bug 2019-04-29 19:56:41 +02:00
x86
xen ALSA: xen-front: Do not use stream buffer size before it is set 2019-04-04 14:44:18 +02:00
ac97_bus.c
Kconfig
last.c ALSA: core: Don't refer to snd_cards array directly 2019-04-17 07:16:15 +02:00
Makefile
sound_core.c