this_urb->transfer_flags |= URB_ASYNC_UNLINK; 
static int option_write(struct usb_serial_port *port,			const unsigned char *buf, int count){	struct option_port_private *portdata;	int i;	int left, todo;	struct urb *this_urb = NULL; /* spurious */	int err;	portdata = usb_get_serial_port_data(port);	dbg("%s: write (%d chars)", __FUNCTION__, count);	i = 0;	left = count;	for (i=0; left > 0 && i < N_OUT_URB; i++) {		todo = left;		if (todo > OUT_BUFLEN)			todo = OUT_BUFLEN;		this_urb = portdata->out_urbs[i];		if (this_urb->status == -EINPROGRESS) {			if (this_urb->transfer_flags & URB_ASYNC_UNLINK)				continue;			if (time_before(jiffies,					portdata->tx_start_time[i] + 10 * HZ))				continue;			this_urb->transfer_flags |= URB_ASYNC_UNLINK;			usb_unlink_urb(this_urb);			continue;		}		if (this_urb->status != 0)			dbg("usb_write %p failed (err=%d)",				this_urb, this_urb->status);		dbg("%s: endpoint %d buf %d", __FUNCTION__,			usb_pipeendpoint(this_urb->pipe), i);		/* send the data */		memcpy (this_urb->transfer_buffer, buf, todo);		this_urb->transfer_buffer_length = todo;		this_urb->transfer_flags &= ~URB_ASYNC_UNLINK;		this_urb->dev = port->serial->dev;		err = usb_submit_urb(this_urb, GFP_ATOMIC);		if (err) {			dbg("usb_submit_urb %p (write bulk) failed "				"(%d, has %d)", this_urb,				err, this_urb->status);			continue;		}		portdata->tx_start_time[i] = jiffies;		buf += todo;		left -= todo;	}	count -= left;	dbg("%s: wrote (did %d)", __FUNCTION__, count);	return count;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/242cf670c09c05504ce53dfc27f8331a072f169d/option.c/clean/drivers/usb/serial/option.c