From Bugzilla Helper: User-Agent: Mozilla/4.78 [en] (X11; U; Linux 2.4.18 i686) Description of problem: Before calling 'generic_close', the function 'serial_close' does a call to 'down'. Within 'generic_close' another call to 'down' is done which causes the driver to hang. Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Enable USB Serial Converter support and the USB Generic Serial Driver in the kernel. 2. Load the usbserial driver with vendor and product ids for a "generic" USB device. 3. Attach the "generic" USB device to the system. 4. Write a program that does an open and close of "/dev/ttyUSB0". Actual Results: Program will not return from call to 'close'. Expected Results: Program will return from call to 'close' and finish execution. Additional info:
oops, I caused this bug with my previous patch for the visor oops. If the calls to down(&port->sem) and up(&port->sem) are removed from drivers/usb/usbserial.c::generic_close() this problem should be fixed. Let me know if anyone needs me to make a patch for this problem. Again, very sorry about this.
See also Bug 61820.
I fixed it in HEAD 2.4.18-5.47 (Raw Hide), but not in Hampton (7.3). The temporary 2.4 fix is in current -ac.