This is vijay and new to this group. Normally I use to go through the
Linux kernel source and try to understand how things work.
Last week I was going through the cdc-acm driver source(linux-2.6.25).
I think there is a bug with that driver and I am not sure about it. So
I decided to post you guys and get your views on that.
The interface is claimed in 'acm_probe' using 'usb_driver_claim_interface' and
it has been released in 'acm_disconnect' using 'usb_driver_release_interface'.
This works fine as long as the control reaches 'acm_disconnect'.
What happens when the control never reaches the 'acm_disconnect'. Like simply
loading the driver and unloading the driver when the device is still in use.
In this case I hope the 'usb_driver_release_interface' never gets called.
Is it a bug? Do we have to do a 'usb_driver_release_interface' in 'acm_exit'.
Thank you very much for replying.
Given below is the snip from '\linux-2.6.25\drivers\usb\core\driver.c'
* This can be used by drivers to release an interface without waiting
* for their disconnect() methods to be called. In typical cases this
* also causes the driver disconnect() method to be called.
What happens when the function 'usb_deregister' in 'acm_exit' gets
called before the control reaches the 'acm_disconnect'? Is there any
possibility for this? If yes what happens during this scenario?