Hi All, While looking at libusb today I ended up looking at the reap-after-disconnect code.
What stands out is that libusb expects to be able to reap all outstanding urbs on a device on receiving a POLL_ERR status from poll (on supported kernels). But the usbfs poll implementation will return POLL_ERR as soon as ps->dev->state == USB_STATE_NOTATTACHED, and the kernel usb code sets state = USB_STATE_NOTATTACHED some time before usbdev_remove() gets called and moves all pending urbs to the async_completed list. So if libusb ends up calling poll between the setting state = USB_STATE_NOTATTACHED and usbdev_remove() being called then it ends up not reaping all urbs since it will stop monitoring the device after the first POLL_ERR. I'll write a libusb fix for this, but I'm wondering if this is something which we also want to fix on the kernel side? Regards, Hans -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html