diff options
author | Takashi Iwai <[email protected]> | 2011-02-24 10:05:01 +0100 |
---|---|---|
committer | Takashi Iwai <[email protected]> | 2011-02-24 10:05:01 +0100 |
commit | 1aa924e21eec9dbb2c5fae90a71451a700db4414 (patch) | |
tree | 27cc77862c7f7078c7339e2f9b4e52da12ad04c8 /sound/usb/card.c | |
parent | 786c51f9168cfd2d49250c6e5e60035cbb2fd5a1 (diff) | |
parent | ebbd224c22a00dbbee95031a0d6d595460f6f2b3 (diff) |
Merge branch 'fix/hda' into topic/hda
Diffstat (limited to 'sound/usb/card.c')
-rw-r--r-- | sound/usb/card.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index 800f7cb4f251..c0f8270bc199 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -323,6 +323,7 @@ static int snd_usb_audio_create(struct usb_device *dev, int idx, return -ENOMEM; } + mutex_init(&chip->shutdown_mutex); chip->index = idx; chip->dev = dev; chip->card = card; @@ -531,6 +532,7 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) chip = ptr; card = chip->card; mutex_lock(®ister_mutex); + mutex_lock(&chip->shutdown_mutex); chip->shutdown = 1; chip->num_interfaces--; if (chip->num_interfaces <= 0) { @@ -548,9 +550,11 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) snd_usb_mixer_disconnect(p); } usb_chip[chip->index] = NULL; + mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); snd_card_free_when_closed(card); } else { + mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); } } |