aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-02-22 11:14:34 -0500
committerJaroslav Kysela <perex@suse.cz>2006-03-22 04:30:58 -0500
commit62c5549ee246fa30606f918f97c6b3cde2831292 (patch)
treec991edcae8796f149cf4d80986334ff0d78d7bc0 /sound
parente661d0ddc58740eca41313fbb01f1612ff9c7878 (diff)
[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>
Diffstat (limited to 'sound')
-rw-r--r--sound/core/seq/seq_virmidi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/core/seq/seq_virmidi.c b/sound/core/seq/seq_virmidi.c
index 14fd1a608e14..f4edec603b8f 100644
--- a/sound/core/seq/seq_virmidi.c
+++ b/sound/core/seq/seq_virmidi.c
@@ -167,7 +167,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
167 return; /* ignored */ 167 return; /* ignored */
168 } 168 }
169 if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { 169 if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
170 if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, 0, 0) < 0) 170 if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
171 return; 171 return;
172 vmidi->event.type = SNDRV_SEQ_EVENT_NONE; 172 vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
173 } 173 }
@@ -186,7 +186,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
186 pbuf += res; 186 pbuf += res;
187 count -= res; 187 count -= res;
188 if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { 188 if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
189 if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, 0, 0) < 0) 189 if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
190 return; 190 return;
191 vmidi->event.type = SNDRV_SEQ_EVENT_NONE; 191 vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
192 } 192 }