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