baldrick at free.fr
Fri Apr 8 08:39:16 EDT 2005
> > I already set it to NULL for just this reason - check the code.
> Yep, I've already apologized :)
no problem! :)
> > And you
> > don't recurse into disconnect for the interface disconnect was called
> > on: the usb_driver_release_interface code ignores the release in this
> > case.
> I don't see how... usb_driver_release_interface checks if the
> dev->driver_list is empty for this, but it is emptied only in
> device_release_driver called after this check. This sorta limits the
> recursion depth to 2, but doesn't exclude it.
I'm only talking about the following: you get a disconnect on
a certain interface, say interface number 1. If you call
usb_driver_release_interface for interface 1 from the disconnect
call, then it bails out at this line:
if (!klist_node_attached(&dev->knode_driver) && !klist_node_attached(&dev->knode_bus))
However, you can call it for other interfaces != 1, and
disconnect will indeed be called for those interfaces.
More information about the Usbatm