blob: 40109403ba8c30c973028d6033b5a4e034c1c067 [file] [log] [blame]
From stable-bounces@linux.kernel.org Tue Mar 29 10:16:52 2005
Date: Tue, 29 Mar 2005 20:16:27 +0200
From: Takashi Iwai <tiwai@suse.de>
To: stable@kernel.org
Subject: [PATCH] Fix Oops with ALSA timer event notification
the patch below fixes the bug of ALSA timer notification, which is
used in the recent ALSA dmix plugin.
- fixed Oops in read()
- fixed wake-up polls and signals with new events
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- linux/sound/core/timer.c 20 Jan 2005 17:37:00 -0000 1.50
+++ linux/sound/core/timer.c 14 Mar 2005 22:07:32 -0000
@@ -1117,7 +1117,8 @@
if (tu->qused >= tu->queue_size) {
tu->overrun++;
} else {
- memcpy(&tu->queue[tu->qtail++], tread, sizeof(*tread));
+ memcpy(&tu->tqueue[tu->qtail++], tread, sizeof(*tread));
+ tu->qtail %= tu->queue_size;
tu->qused++;
}
}
@@ -1140,6 +1141,8 @@
spin_lock(&tu->qlock);
snd_timer_user_append_to_tqueue(tu, &r1);
spin_unlock(&tu->qlock);
+ kill_fasync(&tu->fasync, SIGIO, POLL_IN);
+ wake_up(&tu->qchange_sleep);
}
static void snd_timer_user_tinterrupt(snd_timer_instance_t *timeri,