card = tmpcard; 
static void __exit icn_exit(void){	isdn_ctrl cmd;	icn_card *card = cards;	icn_card *last;	int i;	unsigned long flags;	icn_stopallcards();	while (card) {		cmd.command = ISDN_STAT_UNLOAD;		cmd.driver = card->myid;		card->interface.statcallb(&cmd);		spin_lock_irqsave(&card->lock, flags);		if (card->rvalid) {			OUTB_P(0, ICN_RUN);	/* Reset Controller     */			OUTB_P(0, ICN_MAPRAM);	/* Disable RAM          */			if (card->secondhalf || (!card->doubleS0)) {				release_region(card->port, ICN_PORTLEN);				card->rvalid = 0;			}			for (i = 0; i < ICN_BCH; i++)				icn_free_queue(card, i);		}		card = card->next;		spin_unlock_irqrestore(&card->lock, flags);	}	card = cards;	cards = NULL;	while (card) {		last = card;		card = card->next;		kfree(last);	}	if (dev.mvalid) {		iounmap(dev.shmem);		release_mem_region(dev.memaddr, 0x4000);	}	printk(KERN_NOTICE "ICN-ISDN-driver unloaded\n");}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/138b9dd1fd7b44176af4f3b672060c790b0eaf55/icn.c/buggy/drivers/isdn/icn/icn.c