multiple interface test case

Duncan Sands baldrick at free.fr
Wed Apr 13 07:17:37 EDT 2005


> > release_interfaces: interface 0
> > usb_driver_release_interface: skipping <= somehow I failed to see this!
> > release_interfaces: interface 1
> > usb_driver_release_interface: skipping
> > release_interfaces: interface 2
> > usb_driver_release_interface: skipping
> 
> That is weird then: who has removed _all_ interfaces from the driver's
> list?  On the first disconnect(), the other two interfaces must still
> remain on the list.  Otherwise what does driver_detach() iterate over?

I think it's this one, in device_release_driver:

                klist_del(&dev->knode_driver);

it's called just before doing the disconnect call

                if (drv->remove)
                        drv->remove(dev);

I suppose klist_del removes the driver from the list of drivers,
which means that this test in usb_driver_release_interface fires:

	klist_node_attached(&dev->knode_driver)

driver_detach iterates over devices, but this is a test on the
driver.

Ciao,

D.




More information about the Usbatm mailing list