I'm hiting a dead lock when testing, by using testusb suite tests, hot
unplug. Basicaly, while running a test, I unplug the tested device
(zero device) at a random time. Most of the time, testusb's  process
and khubd are in an uninterruptible state and the bus is "frozen".

Here is a use case that may happen (?) and thus may explain my deadlock:

First, testusb.c is doing an ioctl on the "usbtest" driver. This way
it acquires the device's semaphore by calling "usb_lock_device" in
"usbdev_ioctl". Then it waits for the completion of the urbs it queued
for its testing purpose.

[The zero device is unplugged now]

khubd is wake up and notices that the device has gone. It finally
calls "usb_disconnect" function which in its turn calls
"usb_lock_device" _before_ unlinking all queued urbs. Since the
semaphore is already hold, it's going to sleep.

Since no urbs are unlinked, "usbtest" driver will never wake up since
it's waiting for completion of all urbs.

Do you think that's possible ?

Thanks
--
              Franck


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to