Hi Chris,
> On 04/11/2017 04:33 PM, Christian Gromm wrote:
> Well, this sounds like a workaround to me as you are changing the timing
> by waiting for the URBs to finish. This might prevent the
> race from happening.
> 
I personally would rate it rather as a fix than as a workaround, because the 
"usb_wait_anchor_empty_timeout()" function doesn't only change the timing: It 
ensures that we won't kill any URB which is just being processed. And this is 
exactly the failure that we are observing here.

> I thought an USB device driver is allowed to kill anchored URBs at any
> time, isn't it?
> 
Both functions are described in Documentation/usb/anchors.txt and I agree: It 
is not stated clearly that we must always call the 
"usb_wait_anchor_empty_timeout()" function before we can call the 
"usb_kill_anchored_urbs()" function.

Probably Oliver Neukum, who has written these functions long time ago, can 
explain shortly, if we can call the "usb_kill_anchored_urbs()" function always 
- and if not, in which situation the "usb_wait_anchor_empty_timeout()" function 
has to be called in advance.

Kind regards,
 Rolf
--
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

Reply via email to