On Mon, 2 Apr 2007, Greg KH wrote:

> On Mon, Apr 02, 2007 at 01:05:21AM -0700, David Brownell wrote:
> > On Sunday 01 April 2007 8:16 pm, Greg KH wrote:
> > > 
> > > The way to properly solve this is to just never care about recycling
> > > urbs.  Look at what the visor driver does as an example of how you can
> > > just create a new urb for _every_ instance, fire it off, and then forget
> > > about it.  It gets used and then automatically cleaned up.
> > 
> > That can certainly work, and it has the advantages of simplicity.
> > I wouldn't use that strategy in every driver of course, but I'd
> > guess it's fine for the serial and usblp cases mentioned here.
> 
> Why would you not want it in every driver?  As Oliver is finding out, a
> lot of these "simple" drivers have races all due to their use of a
> pre-allocated urb.  For what kind of situation would you feel this would
> not work?

You don't need to do it in drivers that run in a single kernel thread, 
just using the same URB over and over (like usb-storage).  Or in drivers 
that simply resubmit the same URB from within the completion handler 
(like khubd).

The difficulties arise because requests are generated from userspace 
asynchronously with respect to completions.

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