提交 62c5549e 编写于 作者: T Takashi Iwai 提交者: Jaroslav Kysela

[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: NTakashi Iwai <tiwai@suse.de>
上级 e661d0dd
...@@ -167,7 +167,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream, ...@@ -167,7 +167,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
return; /* ignored */ return; /* ignored */
} }
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { 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; return;
vmidi->event.type = SNDRV_SEQ_EVENT_NONE; vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
} }
...@@ -186,7 +186,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream, ...@@ -186,7 +186,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
pbuf += res; pbuf += res;
count -= res; count -= res;
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { 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; return;
vmidi->event.type = SNDRV_SEQ_EVENT_NONE; vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册