diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-04-28 09:13:41 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-06-22 15:33:10 -0400 |
commit | d689e34b524b69c111db0b7c844d71c8e1a53b15 (patch) | |
tree | a37916ba70fd8d37d14bf546a656722fb4ed79ab | |
parent | bf850204a71a97eb5a6afaf27263bb667f9cab0a (diff) |
[ALSA] Remove spinlocks around proc prints
Don't lock during showing proc read. snd_iprintf() might sleep.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/core/pcm.c | 6 | ||||
-rw-r--r-- | sound/core/timer.c | 2 |
2 files changed, 0 insertions, 8 deletions
diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 08223783cfa3..4f5204175d37 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c | |||
@@ -351,10 +351,8 @@ static void snd_pcm_substream_proc_hw_params_read(struct snd_info_entry *entry, | |||
351 | snd_iprintf(buffer, "closed\n"); | 351 | snd_iprintf(buffer, "closed\n"); |
352 | return; | 352 | return; |
353 | } | 353 | } |
354 | snd_pcm_stream_lock_irq(substream); | ||
355 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { | 354 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { |
356 | snd_iprintf(buffer, "no setup\n"); | 355 | snd_iprintf(buffer, "no setup\n"); |
357 | snd_pcm_stream_unlock_irq(substream); | ||
358 | return; | 356 | return; |
359 | } | 357 | } |
360 | snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access)); | 358 | snd_iprintf(buffer, "access: %s\n", snd_pcm_access_name(runtime->access)); |
@@ -375,7 +373,6 @@ static void snd_pcm_substream_proc_hw_params_read(struct snd_info_entry *entry, | |||
375 | snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames); | 373 | snd_iprintf(buffer, "OSS period frames: %lu\n", (unsigned long)runtime->oss.period_frames); |
376 | } | 374 | } |
377 | #endif | 375 | #endif |
378 | snd_pcm_stream_unlock_irq(substream); | ||
379 | } | 376 | } |
380 | 377 | ||
381 | static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, | 378 | static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, |
@@ -387,10 +384,8 @@ static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, | |||
387 | snd_iprintf(buffer, "closed\n"); | 384 | snd_iprintf(buffer, "closed\n"); |
388 | return; | 385 | return; |
389 | } | 386 | } |
390 | snd_pcm_stream_lock_irq(substream); | ||
391 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { | 387 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN) { |
392 | snd_iprintf(buffer, "no setup\n"); | 388 | snd_iprintf(buffer, "no setup\n"); |
393 | snd_pcm_stream_unlock_irq(substream); | ||
394 | return; | 389 | return; |
395 | } | 390 | } |
396 | snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode)); | 391 | snd_iprintf(buffer, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(runtime->tstamp_mode)); |
@@ -403,7 +398,6 @@ static void snd_pcm_substream_proc_sw_params_read(struct snd_info_entry *entry, | |||
403 | snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold); | 398 | snd_iprintf(buffer, "silence_threshold: %lu\n", runtime->silence_threshold); |
404 | snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size); | 399 | snd_iprintf(buffer, "silence_size: %lu\n", runtime->silence_size); |
405 | snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary); | 400 | snd_iprintf(buffer, "boundary: %lu\n", runtime->boundary); |
406 | snd_pcm_stream_unlock_irq(substream); | ||
407 | } | 401 | } |
408 | 402 | ||
409 | static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry, | 403 | static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry, |
diff --git a/sound/core/timer.c b/sound/core/timer.c index 9a1e51c7c230..e37eab74572d 100644 --- a/sound/core/timer.c +++ b/sound/core/timer.c | |||
@@ -1095,7 +1095,6 @@ static void snd_timer_proc_read(struct snd_info_entry *entry, | |||
1095 | if (timer->hw.flags & SNDRV_TIMER_HW_SLAVE) | 1095 | if (timer->hw.flags & SNDRV_TIMER_HW_SLAVE) |
1096 | snd_iprintf(buffer, " SLAVE"); | 1096 | snd_iprintf(buffer, " SLAVE"); |
1097 | snd_iprintf(buffer, "\n"); | 1097 | snd_iprintf(buffer, "\n"); |
1098 | spin_lock_irqsave(&timer->lock, flags); | ||
1099 | list_for_each(q, &timer->open_list_head) { | 1098 | list_for_each(q, &timer->open_list_head) { |
1100 | ti = list_entry(q, struct snd_timer_instance, open_list); | 1099 | ti = list_entry(q, struct snd_timer_instance, open_list); |
1101 | snd_iprintf(buffer, " Client %s : %s\n", | 1100 | snd_iprintf(buffer, " Client %s : %s\n", |
@@ -1104,7 +1103,6 @@ static void snd_timer_proc_read(struct snd_info_entry *entry, | |||
1104 | SNDRV_TIMER_IFLG_RUNNING) | 1103 | SNDRV_TIMER_IFLG_RUNNING) |
1105 | ? "running" : "stopped"); | 1104 | ? "running" : "stopped"); |
1106 | } | 1105 | } |
1107 | spin_unlock_irqrestore(&timer->lock, flags); | ||
1108 | } | 1106 | } |
1109 | mutex_unlock(®ister_mutex); | 1107 | mutex_unlock(®ister_mutex); |
1110 | } | 1108 | } |