Oliver Neukum wrote:
		retval = hcd->driver->urb_dequeue (hcd, urb);

		/* hcds shouldn't really fail these calls, but... */
		if (retval) {
			...
		}

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.
Maybe you should make that "dev_warn" and see how often it happens
before you get too worried.  Synchronous unlinks aren't as common
as all that.

The "but" is: "but they do, so let's cope somehow".   You're welcome
to try fixing the rest of the problem(s) in unlink paths; there are
fewer in 2.5 than 2.4, but there's room for improvement.

- Dave





-------------------------------------------------------
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

Reply via email to