snd_card_free_in_thread(card); 
snd_card_free(card); 
static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr){	snd_usb_audio_t *chip;	snd_card_t *card;	struct list_head *p;	if (ptr == (void *)-1L)		return;	chip = ptr;	card = chip->card;	down(&register_mutex);	chip->shutdown = 1;	chip->num_interfaces--;	if (chip->num_interfaces <= 0) {		snd_card_disconnect(card);		/* release the pcm resources */		list_for_each(p, &chip->pcm_list) {			snd_usb_stream_disconnect(p, &usb_audio_driver);		}		/* release the midi resources */		list_for_each(p, &chip->midi_list) {			snd_usbmidi_disconnect(p, &usb_audio_driver);		}		usb_chip[chip->index] = NULL;		up(&register_mutex);		snd_card_free_in_thread(card);	} else {		up(&register_mutex);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/efa93dbedd0e2eacf49ea6fff1fe4397d520cf61/usbaudio.c/buggy/sound/usb/usbaudio.c