snd_card_free_in_thread((snd_card_t*)ptr); 
snd_card_free((snd_card_t*)ptr); 
static void usX2Y_usb_disconnect(struct usb_device* device, void* ptr){	if (ptr) {		usX2Ydev_t* usX2Y = usX2Y((snd_card_t*)ptr);		struct list_head* p;		if (usX2Y->chip_status == USX2Y_STAT_CHIP_HUP)	// on 2.6.1 kernel snd_usbmidi_disconnect()			return;					// calls us back. better leave :-) .		usX2Y->chip.shutdown = 1;		usX2Y->chip_status = USX2Y_STAT_CHIP_HUP;		usX2Y_unlinkSeq(&usX2Y->AS04);		usb_kill_urb(usX2Y->In04urb);		snd_card_disconnect((snd_card_t*)ptr);		/* release the midi resources */		list_for_each(p, &usX2Y->chip.midi_list) {			snd_usbmidi_disconnect(p, &snd_usX2Y_usb_driver);		}		if (usX2Y->us428ctls_sharedmem) 			wake_up(&usX2Y->us428ctls_wait_queue_head);		snd_card_free_in_thread((snd_card_t*)ptr);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/230cd5e24853ed4dd960461989b8ed0986d37a99/usbusx2y.c/buggy/sound/usb/usx2y/usbusx2y.c