diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-03-11 14:48:09 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-03-11 14:48:09 +0100 |
commit | cc99a0861fa1c72335dc91a2e06d0b431911d55e (patch) | |
tree | b5bba9600470f8a5e417519b7c2d5fd13d079c3b /sound/usb/pcm.c | |
parent | bc3a8a01def4fb0ec0ef8a20d097277b9c6b2a1f (diff) | |
parent | 382225e62bdb8059b7f915b133426425516dd300 (diff) |
Merge branch 'fix/misc' into topic/misc
Diffstat (limited to 'sound/usb/pcm.c')
-rw-r--r-- | sound/usb/pcm.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 4132522ac90..e3f680526cb 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -361,6 +361,7 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream, } if (changed) { + mutex_lock(&subs->stream->chip->shutdown_mutex); /* format changed */ snd_usb_release_substream_urbs(subs, 0); /* influenced: period_bytes, channels, rate, format, */ @@ -368,6 +369,7 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream, params_rate(hw_params), snd_pcm_format_physical_width(params_format(hw_params)) * params_channels(hw_params)); + mutex_unlock(&subs->stream->chip->shutdown_mutex); } return ret; @@ -385,8 +387,9 @@ static int snd_usb_hw_free(struct snd_pcm_substream *substream) subs->cur_audiofmt = NULL; subs->cur_rate = 0; subs->period_bytes = 0; - if (!subs->stream->chip->shutdown) - snd_usb_release_substream_urbs(subs, 0); + mutex_lock(&subs->stream->chip->shutdown_mutex); + snd_usb_release_substream_urbs(subs, 0); + mutex_unlock(&subs->stream->chip->shutdown_mutex); return snd_pcm_lib_free_vmalloc_buffer(substream); } |