aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/usbaudio.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-04-17 06:53:26 -0400
committerTakashi Iwai <tiwai@suse.de>2008-04-24 06:00:39 -0400
commit9eb70e68f38bbc5996a2193e7b7dc0b5487a08cb (patch)
treef4079da04cd967a58e95b77b44a00e914d129f5f /sound/usb/usbaudio.c
parentf18638dcf0c481eca2430206ebcdc7295aec8623 (diff)
[ALSA] usb-audio - Fix race in reconnection
Fix the race at reconnection of the device. The disconnected usb_chip[] must be cleared before the next probe call properly. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r--sound/usb/usbaudio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 7b3bcf1916d2..410be4aff1ba 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -3424,7 +3424,6 @@ static void snd_usb_audio_create_proc(struct snd_usb_audio *chip)
3424 3424
3425static int snd_usb_audio_free(struct snd_usb_audio *chip) 3425static int snd_usb_audio_free(struct snd_usb_audio *chip)
3426{ 3426{
3427 usb_chip[chip->index] = NULL;
3428 kfree(chip); 3427 kfree(chip);
3429 return 0; 3428 return 0;
3430} 3429}
@@ -3689,6 +3688,7 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
3689 list_for_each(p, &chip->mixer_list) { 3688 list_for_each(p, &chip->mixer_list) {
3690 snd_usb_mixer_disconnect(p); 3689 snd_usb_mixer_disconnect(p);
3691 } 3690 }
3691 usb_chip[chip->index] = NULL;
3692 mutex_unlock(&register_mutex); 3692 mutex_unlock(&register_mutex);
3693 snd_card_free_when_closed(card); 3693 snd_card_free_when_closed(card);
3694 } else { 3694 } else {