From: Takashi Iwai Date: Thu, 17 Apr 2008 10:53:26 +0000 (+0200) Subject: [ALSA] usb-audio - Fix race in reconnection X-Git-Tag: v2.6.26-rc1~1087^2~30 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9eb70e68f38bbc5996a2193e7b7dc0b5487a08cb;p=linux-2.6 [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 --- diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index 7b3bcf1916..410be4aff1 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) static int snd_usb_audio_free(struct snd_usb_audio *chip) { - usb_chip[chip->index] = NULL; kfree(chip); return 0; } @@ -3689,6 +3688,7 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) list_for_each(p, &chip->mixer_list) { snd_usb_mixer_disconnect(p); } + usb_chip[chip->index] = NULL; mutex_unlock(®ister_mutex); snd_card_free_when_closed(card); } else {