if (edge_port->txfifo.fifo) { kfree(edge_port->txfifo.fifo); edge_port->txfifo.fifo = NULL; } 
kfree(edge_port->txfifo.fifo); edge_port->txfifo.fifo = NULL; 
static void edge_close (struct usb_serial_port *port, struct file * filp){	struct edgeport_serial *edge_serial;	struct edgeport_port *edge_port;	int status;	dbg("%s - port %d", __FUNCTION__, port->number);			 	edge_serial = usb_get_serial_data(port->serial);	edge_port = usb_get_serial_port_data(port);	if ((edge_serial == NULL) || (edge_port == NULL))		return;		// block until tx is empty	block_until_tx_empty(edge_port);	edge_port->closePending = TRUE;	/* flush and chase */	edge_port->chaseResponsePending = TRUE;	dbg("%s - Sending IOSP_CMD_CHASE_PORT", __FUNCTION__);	status = send_iosp_ext_cmd (edge_port, IOSP_CMD_CHASE_PORT, 0);	if (status == 0) {		// block until chase finished		block_until_chase_response(edge_port);	} else {		edge_port->chaseResponsePending = FALSE;	}	/* close the port */	dbg("%s - Sending IOSP_CMD_CLOSE_PORT", __FUNCTION__);	send_iosp_ext_cmd (edge_port, IOSP_CMD_CLOSE_PORT, 0);	//port->close = TRUE;	edge_port->closePending = FALSE;	edge_port->open = FALSE;	edge_port->openPending = FALSE;	if (edge_port->write_urb) {		usb_kill_urb(edge_port->write_urb);	}	if (edge_port->write_urb) {		/* if this urb had a transfer buffer already (old transfer) free it */		if (edge_port->write_urb->transfer_buffer != NULL) {			kfree(edge_port->write_urb->transfer_buffer);		}		usb_free_urb   (edge_port->write_urb);		edge_port->write_urb = NULL;	}	if (edge_port->txfifo.fifo) {		kfree(edge_port->txfifo.fifo);		edge_port->txfifo.fifo = NULL;	}	dbg("%s exited", __FUNCTION__);}   
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1bc3c9e1e44c2059fe2ffa6ff70ad0a925d7b05f/io_edgeport.c/clean/drivers/usb/serial/io_edgeport.c