set_current_state (TASK_UNINTERRUPTIBLE); schedule_timeout (1); 
schedule_timeout_uninterruptible(1); 
ehci_endpoint_disable (struct usb_hcd *hcd, struct usb_host_endpoint *ep){	struct ehci_hcd		*ehci = hcd_to_ehci (hcd);	unsigned long		flags;	struct ehci_qh		*qh, *tmp;	/* ASSERT:  any requests/urbs are being unlinked */	/* ASSERT:  nobody can be submitting urbs for this any more */rescan:	spin_lock_irqsave (&ehci->lock, flags);	qh = ep->hcpriv;	if (!qh)		goto done;	/* endpoints can be iso streams.  for now, we don't	 * accelerate iso completions ... so spin a while.	 */	if (qh->hw_info1 == 0) {		ehci_vdbg (ehci, "iso delay\n");		goto idle_timeout;	}	if (!HC_IS_RUNNING (hcd->state))		qh->qh_state = QH_STATE_IDLE;	switch (qh->qh_state) {	case QH_STATE_LINKED:		for (tmp = ehci->async->qh_next.qh;				tmp && tmp != qh;				tmp = tmp->qh_next.qh)			continue;		/* periodic qh self-unlinks on empty */		if (!tmp)			goto nogood;		unlink_async (ehci, qh);		/* FALL THROUGH */	case QH_STATE_UNLINK:		/* wait for hw to finish? */idle_timeout:		spin_unlock_irqrestore (&ehci->lock, flags);		set_current_state (TASK_UNINTERRUPTIBLE);		schedule_timeout (1);		goto rescan;	case QH_STATE_IDLE:		/* fully unlinked */		if (list_empty (&qh->qtd_list)) {			qh_put (qh);			break;		}		/* else FALL THROUGH */	default:nogood:		/* caller was supposed to have unlinked any requests;		 * that's not our job.  just leak this memory.		 */		ehci_err (ehci, "qh %p (#%02x) state %d%s\n",			qh, ep->desc.bEndpointAddress, qh->qh_state,			list_empty (&qh->qtd_list) ? "" : "(has tds)");		break;	}	ep->hcpriv = NULL;done:	spin_unlock_irqrestore (&ehci->lock, flags);	return;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/22c438632850c0d6257b45c90afed0cea6953afc/ehci-hcd.c/clean/drivers/usb/host/ehci-hcd.c