diff options
author | Takashi Iwai <tiwai@suse.de> | 2019-04-09 13:25:32 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2019-04-09 13:29:34 +0300 |
commit | df55531b8b0eea9d2473f5697ae4f38d0df6bec7 (patch) | |
tree | a6fac1cad0346f2f2bec14c8e9682221070e856e /include/sound | |
parent | 4b81dad109ad7d7b288804fcdc6475b48f242210 (diff) | |
download | linux-df55531b8b0eea9d2473f5697ae4f38d0df6bec7.tar.xz |
ALSA: timer: Revert active callback sync check at close
This is essentially a revert of the commit a7588c896b05 ("ALSA: timer:
Check ack_list emptiness instead of bit flag"). The intended change
by the commit turns out to be insufficient, as snd_timer_close*()
always calls snd_timer_stop() that deletes the ack_list beforehand.
In theory, we can change the behavior of snd_timer_stop() to sync the
pending ack_list, but this will become a deadlock for the callback
like sequencer that calls again snd_timer_stop() from itself. So,
reverting the change is a more straightforward solution.
Fixes: a7588c896b05 ("ALSA: timer: Check ack_list emptiness instead of bit flag")
Reported-by: syzbot+58813d77154713f4de15@syzkaller.appspotmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/timer.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sound/timer.h b/include/sound/timer.h index bcfee20ea226..7ae226ab6990 100644 --- a/include/sound/timer.h +++ b/include/sound/timer.h @@ -43,6 +43,7 @@ #define SNDRV_TIMER_IFLG_START 0x00000004 #define SNDRV_TIMER_IFLG_AUTO 0x00000008 /* auto restart */ #define SNDRV_TIMER_IFLG_FAST 0x00000010 /* fast callback (do not use tasklet) */ +#define SNDRV_TIMER_IFLG_CALLBACK 0x00000020 /* timer callback is active */ #define SNDRV_TIMER_IFLG_EXCLUSIVE 0x00000040 /* exclusive owner - no more instances */ #define SNDRV_TIMER_IFLG_EARLY_EVENT 0x00000080 /* write early event to the poll queue */ |