Hi, this code from hcd.c:
retval = hcd->driver->urb_dequeue (hcd, urb); /* hcds shouldn't really fail these calls, but... */ if (retval) { dev_dbg (sys, "dequeue %p --> %d\n", urb, retval); if (!(urb->transfer_flags & URB_ASYNC_UNLINK)) { spin_lock_irqsave (&urb->lock, flags); urb->complete = splice.complete; urb->context = splice.context; spin_unlock_irqrestore (&urb->lock, flags); } goto bye; } is deeply racy. It can change the context under a running completion handler. I'd suggest that you declare urb_dequeue void and remove it. Regards Oliver ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel