On Mon, 25 Apr 2005, Roman Kagan wrote:
> > > Still trying to get in touch with Pat Mochel on that and especially on
> > > the more convoluted klist case,
> >
> > I've spent a fair amount of time going over the klist code too, and while
> > there may still be a problem or two this doesn't appear to be one of them.
>
> Are you talking of some private tree? The comments I've posted re.
> this problem in the klist case were against 2.6.12-rc2-mm3, and I
> haven't seen anything more recent which would fix it.
>
> In case you've missed that message, it's archived here:
>
> http://marc.theaimsgroup.com/?l=linux-usb-devel&m=111341625900343
I see. This may not be a problem so much with klists as with usbcore.
That is, device_release_driver isn't protected against recursion, but
perhaps it doesn't need to be since usbcore can be changed to prevent
recursion in usb_driver_release_interface. A patch for 2.6.12-rc3 is
below; the same approach should work with -mm. Let me know what you
think.
The other problem I was thinking of is related to the one you found.
Since driver_detach doesn't immediately delete the device from its
driver's list, it's possible that another driver will bind to the device
first and thereby corrupt the list pointers. I haven't heard anything
from Pat since bringing this to his attention.
Alan Stern
Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
Index: usb-2.6/drivers/usb/core/usb.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/usb.c
+++ usb-2.6/drivers/usb/core/usb.c
@@ -323,8 +323,11 @@ void usb_driver_release_interface(struct
return;
/* don't disconnect from disconnect(), or before dev_add() */
- if (!list_empty (&dev->driver_list) && !list_empty (&dev->bus_list))
+ if (iface->condition == USB_INTERFACE_BOUND &&
+ !list_empty (&dev->bus_list)) {
+ iface->condition = USB_INTERFACE_UNBINDING;
device_release_driver(dev);
+ }
dev->driver = NULL;
usb_set_intfdata(iface, NULL);
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel