Hello,

I believe I've found a bug in the USB driver (at least in the 2.4.23
kernel, I haven't checked anything newer)

The bug can be triggered by registering a driver for a USB device, while
disconnecting the device at the same time.

What happens is that a call is made to usb_register() which in turn calls
usb_check_support() for each device. While a usb_device pointer is being
held and examined, the khubd can call usb_disconnect() which then calls
usb_free_dev() on potentionally the same device pointer.

I tested a simple fix by protecting the usb_disconnect() critical code
with the usb_bus_list_lock semaphore. I could no longer reproduce the same
crash afterwards. Since I'm not really an experienced kernel hacker (just
trying to write a driver for my USB device), I'm not sure this is the best
way to fix it.

Arlet



-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to