@jwrdegoede I have read the processcompl() you mention and i agree the only
failure case is when one of the put_user or copy_to_user fails. -EFAULT is the
only error code used there.
Another raw guess: is it possible that data was corrupted during USB transfer
(this actually happens here due to EMI) in a way that the controller/kernel
believes the block transferred was bigger than it really is? Or the request
size parameter sent to device was corrupted in transit and the device returns
more data than what we've asked for?
For example, where the urb->actual_length value comes from, is it from the usb
data? If so, the copy_to_user might fail not because the pointer is invalid,
but because the corrupted size value is actually bigger than the buffer size.
Is it possible?
---
Reply to this email directly or view it on GitHub:
https://github.com/libusbx/libusbx/issues/76#issuecomment-31737079
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel