Re: [BUG] cdc-acm driver module

Previous thread: BUG: unable to handle kernel NULL pointer dereference by Zdenek Kabelac on Wednesday, May 21, 2008 - 5:56 am. (1 message)

Next thread: Re: [alsa-devel] HG -> GIT migration by Rene Herman on Wednesday, May 21, 2008 - 6:04 am. (22 messages)
From: vijay anand
Date: Wednesday, May 21, 2008 - 6:01 am

Hi All,

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'.

Please clarify.

Thanks,
VJ
--

From: Oliver Neukum
Date: Wednesday, May 21, 2008 - 6:25 am

Even in this case disconnect() will be called.
The only time it will not be called is if probe() was never called. But
in that case no interface has been claimed. All is well.

	Regards
		Oliver
--

From: vijay anand
Date: Wednesday, May 21, 2008 - 9:59 pm

Hi Oliver,

Thank you very much for replying.

Given below is the snip from '\linux-2.6.25\drivers\usb\core\driver.c'
for 'usb_driver_release_interface'

****SNIP*****
 * 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.
****END*****

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?

Thanks,
VJ



--

From: Oliver Neukum
Date: Thursday, May 22, 2008 - 4:21 am

This cannot happen. The driver core will disconnect all devices bound
to a driver to be unloaded.

	Regards
		Oliver

--

From: vijay anand
Date: Thursday, May 22, 2008 - 6:24 am

Thank you very much !!

--

Previous thread: BUG: unable to handle kernel NULL pointer dereference by Zdenek Kabelac on Wednesday, May 21, 2008 - 5:56 am. (1 message)

Next thread: Re: [alsa-devel] HG -> GIT migration by Rene Herman on Wednesday, May 21, 2008 - 6:04 am. (22 messages)