uhci_clear_next_interrupt(uhci); 
static void uhci_scan_schedule(struct uhci_hcd *uhci, struct pt_regs *regs){	struct urb_priv *urbp, *tmp;	/* Don't allow re-entrant calls */	if (uhci->scan_in_progress) {		uhci->need_rescan = 1;		return;	}	uhci->scan_in_progress = 1; rescan:	uhci->need_rescan = 0;	uhci_get_current_frame_number(uhci);	if (uhci->frame_number + uhci->is_stopped != uhci->qh_remove_age)		uhci_free_pending_qhs(uhci);	if (uhci->frame_number + uhci->is_stopped != uhci->td_remove_age)		uhci_free_pending_tds(uhci);	if (uhci->frame_number + uhci->is_stopped != uhci->urb_remove_age)		uhci_remove_pending_urbps(uhci);	/* Walk the list of pending URBs to see which ones completed	 * (must be _safe because uhci_transfer_result() dequeues URBs) */	list_for_each_entry_safe(urbp, tmp, &uhci->urb_list, urb_list) {		struct urb *urb = urbp->urb;		/* Checks the status and does all of the magic necessary */		uhci_transfer_result(uhci, urb);	}	uhci_finish_completion(uhci, regs);	/* If the controller is stopped, we can finish these off right now */	if (uhci->is_stopped) {		uhci_free_pending_qhs(uhci);		uhci_free_pending_tds(uhci);		uhci_remove_pending_urbps(uhci);	}	if (uhci->need_rescan)		goto rescan;	uhci->scan_in_progress = 0;	if (list_empty(&uhci->urb_remove_list) &&	    list_empty(&uhci->td_remove_list) &&	    list_empty(&uhci->qh_remove_list))		uhci_clear_next_interrupt(uhci);	else		uhci_set_next_interrupt(uhci);	/* Wake up anyone waiting for an URB to complete */	wake_up_all(&uhci->waitqh);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6c1b445c226dd82d0961725dec8051b95003723a/uhci-q.c/buggy/drivers/usb/host/uhci-q.c