OK, I flooded hcd_endpoint_disable() and usb_hcd_giveback_urb() with printks and found out that the first get called when I unplug the device and it calls unlink1() with the correct urb then prints (with debugging enabled) "uhci_hcd 0000:00:07.2: shutdown urb cf02bb00 pipe c0020480 ep4in-bulk" it goes back to "rescan:" then the list of URBs is empty and the function returns. The usb_hcd_giveback_urb() on the other hand never gets called with the URB of interest.
The giveback() call in this case should happen after the now-canceled urbs have been decoupled from the hardware. But your system doesn't have a uhci_endpoint_disable() call to use ... so that synchronization has to happen in the traditional place (your device driver) rather than inside usbcore (before your driver can even notice the issue).
- Dave
------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel