if (j->read_buffer) kfree(j->read_buffer); if (j->write_buffer) kfree(j->write_buffer); 
kfree(j->read_buffer); kfree(j->write_buffer); 
static void cleanup(void){	int cnt;	IXJ *j;	for (cnt = 0; cnt < IXJMAX; cnt++) {		j = get_ixj(cnt);		if(j != NULL && j->DSPbase) {			if (ixjdebug & 0x0002)				printk(KERN_INFO "IXJ: Deleting timer for /dev/phone%d\n", cnt);			del_timer(&j->timer);			if (j->cardtype == QTI_LINEJACK) {				j->pld_scrw.bits.daafsyncen = 0;	/* Turn off DAA Frame Sync */				outb_p(j->pld_scrw.byte, j->XILINXbase);				j->pld_slicw.bits.rly1 = 0;				j->pld_slicw.bits.rly2 = 0;				j->pld_slicw.bits.rly3 = 0;				outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);				LED_SetState(0x0, j);				if (ixjdebug & 0x0002)					printk(KERN_INFO "IXJ: Releasing XILINX address for /dev/phone%d\n", cnt);				release_region(j->XILINXbase, 8);			} else if (j->cardtype == QTI_PHONEJACK_LITE || j->cardtype == QTI_PHONEJACK_PCI) {				if (ixjdebug & 0x0002)					printk(KERN_INFO "IXJ: Releasing XILINX address for /dev/phone%d\n", cnt);				release_region(j->XILINXbase, 4);			}			if (j->read_buffer)				kfree(j->read_buffer);			if (j->write_buffer)				kfree(j->write_buffer);			if (j->dev)				pnp_device_detach(j->dev);			if (ixjdebug & 0x0002)				printk(KERN_INFO "IXJ: Unregistering /dev/phone%d from LTAPI\n", cnt);			phone_unregister_device(&j->p);			if (ixjdebug & 0x0002)				printk(KERN_INFO "IXJ: Releasing DSP address for /dev/phone%d\n", cnt);			release_region(j->DSPbase, 16);#ifdef IXJ_DYN_ALLOC			if (ixjdebug & 0x0002)				printk(KERN_INFO "IXJ: Freeing memory for /dev/phone%d\n", cnt);			kfree(j);			ixj[cnt] = NULL;#endif		}	}	if (ixjdebug & 0x0002)		printk(KERN_INFO "IXJ: Removing /proc/ixj\n");	remove_proc_entry ("ixj", NULL);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0159f76d9f5839c3c92bc3a91c865e94d5e489a8/ixj.c/buggy/drivers/telephony/ixj.c