On Wed, Feb 19, 2003 at 07:57:29PM -0500, Johannes Erdfelt wrote:
> > 
> > Heh.  No, urbs are referenced counted now.  So a driver can do the
> > following just fine:
> >     - usb_alloc_urb()
> >     - urb data = kmalloc()
> >     - usb_submit_urb()
> >     - usb_free_urb()
> > 
> > Then later in the completion function you free the transfer buffer.
> > When the hcd is done with the urb, the last urb_free_urb() call in the
> > hcd causes the urb to disappear.
> > 
> > No worries or overhead in the usb driver to keep track of all of
> > the urbs it created, enabling very simple code.
> > 
> > So I guess I do need to add module reference counting to urbs in order
> > to get this case to work properly.  I'll look into it...
> 
> It seems to me that this is dangerous.
> 
> The only way this could work is if some other code (core, HCD) keeps
> track of the URBs and then unlinks them when disconnect processing
> happens.

You've said that if a device is disconnected, it's urbs will eventually
timeout, right?  So everything should be fine, given what I say below...

> Otherwise, the device could be closed by the application and the driver
> unloaded only to have URBs it allocated still active only to have a
> callback made into an old modules address space.

Hence the need to prevent such a module from being unloaded until all
urbs "owned" by it are retired.


> 
> JE


-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to