[ALSA] Fix sleep in atomic in virmidi driver
Modules: ALSA sequencer Debug: sleeping function called from invalid context at /usr/src/linux/include/linux/rwsem.h:43 in_atomic():1, irqs_disabled():0 [<f999d15e>] snd_seq_deliver_event+0xb4/0x1a8 [snd_seq] [<f999d2be>] snd_seq_kernel_client_dispatch+0x6c/0x7c [snd_seq] [<f93321fc>] snd_virmidi_output_trigger+0xca/0xe5 [snd_seq_virmidi] Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
e661d0ddc5
commit
62c5549ee2
|
@ -167,7 +167,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
|
|||
return; /* ignored */
|
||||
}
|
||||
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
|
||||
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, 0, 0) < 0)
|
||||
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
|
||||
return;
|
||||
vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
|
||||
}
|
||||
|
@ -186,7 +186,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
|
|||
pbuf += res;
|
||||
count -= res;
|
||||
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
|
||||
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, 0, 0) < 0)
|
||||
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
|
||||
return;
|
||||
vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue