class_simple_device_remove(MKDEV(cosa_major, i)); 
class_device_destroy(cosa_class, MKDEV(cosa_major, i)); 
static void __exit cosa_exit(void){	struct cosa_data *cosa;	int i;	printk(KERN_INFO "Unloading the cosa module\n");	for (i=0; i<nr_cards; i++) {		class_simple_device_remove(MKDEV(cosa_major, i));		devfs_remove("cosa/%d", i);	}	class_simple_destroy(cosa_class);	devfs_remove("cosa");	for (cosa=cosa_cards; nr_cards--; cosa++) {		/* Clean up the per-channel data */		for (i=0; i<cosa->nchannels; i++) {			/* Chardev driver has no alloc'd per-channel data */			sppp_channel_delete(cosa->chan+i);		}		/* Clean up the per-card data */		kfree(cosa->chan);		kfree(cosa->bouncebuf);		free_irq(cosa->irq, cosa);		free_dma(cosa->dma);		release_region(cosa->datareg,is_8bit(cosa)?2:4);	}	unregister_chrdev(cosa_major, "cosa");}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/56b2293595b2eb52cc2aa2baf92c6cfa8265f9d5/cosa.c/clean/drivers/net/wan/cosa.c