usbatm : modprobe & rmmod

matthieu castet castet.matthieu at
Sun Jan 23 17:22:54 EST 2005


Roman Kagan wrote:
>   Hi Duncan,
> On Sat, 2005-01-22 at 16:19 +0100, Duncan Sands wrote:
>>>It looks like there's a bug in usb_atm.c reference counting:
>>>udsl_destroy_instance kfrees udsl_instance_data, while the latter is
>>>is a member of {speedtch,cxacru,...}_instance_data and not kmalloced
>>>separately.  I'll try to come up with a proper fix tomorrow (I'll have
>>>to check if simply removing kfree in udsl_destroy_instance is enough).
>                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> What a bullshit I can write when I'm falling asleep.  Strangely enough
> another message I wrote this morning with a better wording didn't get to
> the list.
>>For what it's worth, this is fixed (I think) in the new driver organisation
>>I'm playing with.
> I can't tell since the code to store the minidriver instance data hasn't
> hit CVS yet.  You'll probably need a release function for the
> minidrivers whose instance data can't be destroyed synchronously though,
> and call it in udsl_destroy_instance.
> Meanwhile, if you don't mind, I'll keep trying with the split up
> usb_atm.  In particular, I'm going to change the interface so that
> 1) modem driver instance owns a pointer to udsl_instance, rather than
> the struct itself.  It's allocated in udsl_instance_setup, and freed in
> udsl_instance_disconnect.
> 2) udsl_instance_{setup,disconnect} calls usb_{get,put}_dev (already
> there) so that usb_atm can continue after driver instance is destroyed.
> In future it'll also need to call usb_{get,put}_interface to support the
> drivers like eagle-usb, which AFAICS uses different interfaces to send
> and to receive data.
> 3) usb_atm refcount counts atm references only, and
> udsl_{get,put}_instance become internal to usb_atm.  The drivers do
> their own bookkeeping, if needed.
Why not in actual usb_atm :
udsl_instance_setup has a structure as a parameter, this struct contain 
all the parameters the user of the library can touch (usb_dev, endpoint,...)
udsl_instance_setup kmalloc udsl_instance_data and fill it with the 
parameters.Then it return a pointer to the udsl_instance_data.

udsl_instance_disconnect isn't changed.


More information about the Usbatm mailing list