mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-25 11:55:37 +00:00
[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:
parent
1bc084026f
commit
4a0d7ce02b
1 changed files with 4 additions and 1 deletions
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue