@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

Reply via email to