Kernel version 2.6.13 introduced a regression (vs. 2.6.12.6) in the
generic USB serial converter driver. The regression manifests, as far
as I can tell, whenever you attempt to write to the device. The
symptom is that the write never completes (write() returns 0, or
blocks). I'm pretty sure this will happen with all hardware, but I
only have my hardware to test with (amd64 host interfacing to a
custom-built USB device based on an Atmel AT91SAM7X256 arm7tdmi chip's
built-in USB transceiver).
The patch (vs. vanilla 2.6.13.4) is rather straightforward:
===================================================================
diff -ru linux-2.6.13.4/drivers/usb/serial/generic.c linux-2.6.13.4-fixed/drivers/usb/serial/generic.c
--- linux-2.6.13.4/drivers/usb/serial/generic.c 2005-10-10 14:54:29.000000000 -0400
+++ linux-2.6.13.4-fixed/drivers/usb/serial/generic.c 2005-10-13 21:34:54.000000000 -0400
@@ -223,7 +223,7 @@
dbg("%s - port %d", __FUNCTION__, port->number);
if (serial->num_bulk_out) {
- if (port->write_urb_busy)
+ if (!(port->write_urb_busy))
room = port->bulk_out_size;
}
===================================================================
Please let me know if I'm missing something. Otherwise, do I need to
do anything in particular to get a maintainer to accept the patch?
(I'm a long-time user, first-time patcher, so forgive my ignorance
about procedures.)
--
Randall
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]