if (unlikely (qh == NULL)) { 
if (unlikely (qh == NULL)) 
submit_async (	struct ehci_hcd		*ehci,	struct usb_host_endpoint *ep,	struct urb		*urb,	struct list_head	*qtd_list,	gfp_t			mem_flags) {	struct ehci_qtd		*qtd;	int			epnum;	unsigned long		flags;	struct ehci_qh		*qh = NULL;	qtd = list_entry (qtd_list->next, struct ehci_qtd, qtd_list);	epnum = ep->desc.bEndpointAddress;#ifdef EHCI_URB_TRACE	ehci_dbg (ehci,		"%s %s urb %p ep%d%s len %d, qtd %p [qh %p]\n",		__FUNCTION__, urb->dev->devpath, urb,		epnum & 0x0f, (epnum & USB_DIR_IN) ? "in" : "out",		urb->transfer_buffer_length,		qtd, ep->hcpriv);#endif	spin_lock_irqsave (&ehci->lock, flags);	qh = qh_append_tds (ehci, urb, qtd_list, epnum, &ep->hcpriv);	/* Control/bulk operations through TTs don't need scheduling,	 * the HC and TT handle it when the TT has a buffer ready.	 */	if (likely (qh != NULL)) {		if (likely (qh->qh_state == QH_STATE_IDLE))			qh_link_async (ehci, qh_get (qh));	}	spin_unlock_irqrestore (&ehci->lock, flags);	if (unlikely (qh == NULL)) {		qtd_list_free (ehci, urb, qtd_list);		return -ENOMEM;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8de98402652c01839ae321be6cb3054cf5735d83/ehci-q.c/buggy/drivers/usb/host/ehci-q.c