On Thu, 15 Mar 2007, Oliver Neukum wrote:

> Hi,
> 
> I am looking at code in which an interrupt completion handler can either
> 
> a) resubmit itself
> b) submit a control URB
> 
> the control URB will in turn submit the interrupt URB again.
> 
> It seems to me that usb_kill_urb() alone cannot be used to cancel IO
> without a race condition, as the following race always exists.

Yes, certainly.  usb_kill_urb() handles only the common case.

> This problem exists if more than two URBs are involved, too. If you take
> completion as nodes in a directed graph and submissions as edges, you
> need to watch for cycles.
> 
> Comments? Should I add a warning to Documentation/URB.txt?

It wouldn't be a bad idea to do so.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to