android_kernel_samsung_a7y1.../sound
Takashi Iwai e5d882550b ALSA: hda - Register irq handler after the chip initialization
[ Upstream commit f495222e28275222ab6fd93813bd3d462e16d340 ]

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 b61749a89f82
("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-06 19:02:01 +02:00
..
aoa A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
arm A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
atmel A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
core ALSA: info: Fix racy addition/deletion of nodes 2020-04-06 15:57:17 +02:00
drivers ALSA: opl3: fix mismatch between snd_opl3_drum_switch definition and declaration 2020-04-06 15:17:05 +02:00
firewire A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
hda A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
i2c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
isa ALSA: sb8: add a check for request_region 2020-04-06 15:16:58 +02:00
mips A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
oss A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
parisc A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
pci ALSA: hda - Register irq handler after the chip initialization 2020-04-06 19:02:01 +02:00
pcmcia A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ppc A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sh A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
soc ASoC: davinci-mcasp: Fix clang warning without CONFIG_PM 2020-04-06 18:20:35 +02:00
sparc A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
spi A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
synth A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
usb ALSA: usb-audio: Fix a memory leak bug 2020-04-06 18:12:18 +02:00
ac97_bus.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Kconfig A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
last.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Makefile A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sound_core.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sound_firmware.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30