Duncan Sands wrote:

This just came up in devio.c: the "synchronous" call to usb_unlink_urb
was returning immediately with -EBUSY (probably because the core
just nuked the urbs) even though the completion handlers hadn't
finished.

That was with uhci-hcd, right? To support Greg's wish to support a "fire-and-forget" urb management policy, I think we really need to have a uhci_endpoint_disable() that's waiting for those urbs.


I bet nobody checks the return code because they expect the core to
do whatever it takes to unlink the urb - even if it takes a long time.

Considering that the core+hcds never actually tried to implement the behavior those drivers were assuming, I've just assumed that idiom was just another longstanding bug.

Back on 2.4 the fact that unlinking doesn't work that way was maybe
less trouble, since the core wasn't doing any unlinking on disconnect
paths.  (At least OHCI just succeeded there, rather than report EBUSY;
showing that wishful thinking can seem to work.)  On 2.6 the core
does some unlinks, since so many drivers do it wrong; but if they're
running on UHCI, that driver bug currenly seems to hurt more.

- Dave




------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to