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