[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>
This commit is contained in:
tiwai@suse.de 2005-04-07 11:15:10 -07:00 committed by Greg KH
parent 1bc084026f
commit 4a0d7ce02b

View file

@ -1117,7 +1117,8 @@ static void snd_timer_user_append_to_tqueue(snd_timer_user_t *tu, snd_timer_trea
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 @@ static void snd_timer_user_ccallback(snd_timer_instance_t *timeri,
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,