diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-02-22 11:14:34 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-22 04:30:58 -0500 |
commit | 62c5549ee246fa30606f918f97c6b3cde2831292 (patch) | |
tree | c991edcae8796f149cf4d80986334ff0d78d7bc0 /sound/core | |
parent | e661d0ddc58740eca41313fbb01f1612ff9c7878 (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/core')
-rw-r--r-- | sound/core/seq/seq_virmidi.c | 4 |
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 | } |