summaryrefslogtreecommitdiffstats
path: root/sound/pci/rme9652
diff options
context:
space:
mode:
authorTakashi Iwai2009-03-05 09:37:40 +0100
committerTakashi Iwai2009-03-05 09:37:40 +0100
commitc2503cd3be9eacb1dd06ec5b6fba8bb06aac12a8 (patch)
treefe2df3f4a1753b9b35c16f1a6f716e0562cf140b /sound/pci/rme9652
parentALSA: hdsp - whitespace cleanup (diff)
downloadkernel-qcow2-linux-c2503cd3be9eacb1dd06ec5b6fba8bb06aac12a8.tar.gz
kernel-qcow2-linux-c2503cd3be9eacb1dd06ec5b6fba8bb06aac12a8.tar.xz
kernel-qcow2-linux-c2503cd3be9eacb1dd06ec5b6fba8bb06aac12a8.zip
ALSA: hdsp - Ignore MIDI and PCM events in interrupts until initialized
Ignore MIDI and PCM events in the interrupt handler until the device gets initialized properly. Otherwise you may get kernel panic by the access to uninitialized devices via hotplugging. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/rme9652')
-rw-r--r--sound/pci/rme9652/hdsp.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index dc65fe1c9c65..314e73531bd1 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -3740,6 +3740,9 @@ static irqreturn_t snd_hdsp_interrupt(int irq, void *dev_id)
midi0status = hdsp_read (hdsp, HDSP_midiStatusIn0) & 0xff;
midi1status = hdsp_read (hdsp, HDSP_midiStatusIn1) & 0xff;
+ if (!(hdsp->state & HDSP_InitializationComplete))
+ return IRQ_HANDLED;
+
if (audio) {
if (hdsp->capture_substream)
snd_pcm_period_elapsed(hdsp->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);