diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-04-17 06:53:26 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:39 -0400 |
commit | 9eb70e68f38bbc5996a2193e7b7dc0b5487a08cb (patch) | |
tree | f4079da04cd967a58e95b77b44a00e914d129f5f /sound | |
parent | f18638dcf0c481eca2430206ebcdc7295aec8623 (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')
-rw-r--r-- | sound/usb/usbaudio.c | 2 |
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 | ||
3425 | static int snd_usb_audio_free(struct snd_usb_audio *chip) | 3425 | static 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(®ister_mutex); | 3692 | mutex_unlock(®ister_mutex); |
3693 | snd_card_free_when_closed(card); | 3693 | snd_card_free_when_closed(card); |
3694 | } else { | 3694 | } else { |