/* Call this to stop the system keeping track of this URB  */
void usb_unanchor_urb(struct urb *urb)
/* Call this to stop the system keeping track of this URB  */
void usb_unanchor_urb(struct urb *urb)
{
	unsigned long flags;
	struct usb_anchor *anchor;
	if (!urb)
		return;
	anchor = urb->anchor;
	if (!anchor)
		return;
	spin_lock_irqsave(&anchor->lock, flags);
	if (unlikely(anchor != urb->anchor)) {
		spin_unlock_irqrestore(&anchor->lock, flags);
		return;
	}
	urb->anchor = NULL;
	list_del(&urb->anchor_list);
	spin_unlock_irqrestore(&anchor->lock, flags);
	usb_put_urb(urb);
	if (list_empty(&anchor->urb_list))
		wake_up(&anchor->wait);
}