diff options
author | Martin Dietze <di@fh-wedel.de> | 2009-05-19 15:54:14 +0200 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2009-05-19 15:54:17 +0200 |
commit | 9f026f95ef802e993fd4b65c03ee85a4b4601421 (patch) | |
tree | a3f1d587ab40947864c292df2f1ab1adb2f6d136 /recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff | |
parent | 7ef692efa306973b2a204cfc227d872cd1bee69c (diff) | |
download | openembedded-9f026f95ef802e993fd4b65c03ee85a4b4601421.tar.gz |
linux-mtx 2.6.27: updates
Diffstat (limited to 'recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff')
-rw-r--r-- | recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff b/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff new file mode 100644 index 0000000000..6a98f76c7a --- /dev/null +++ b/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff @@ -0,0 +1,33 @@ +--- linux/drivers/usb/serial/usbserial.c-27 2006-06-27 10:26:06.294476250 +0200 ++++ linux/drivers/usb/serial/usbserial.c 2006-06-27 10:30:31.011020000 +0200 +@@ -528,8 +528,18 @@ + down(&port->sem); + dbg("%s - port %d len %d backlog %d", __FUNCTION__, + port->number, job->len, port->write_backlog); +- if (port->tty != NULL) +- __serial_write(port, 0, job->buff, job->len); ++ if (port->tty != NULL) { ++ int rc; ++ int sent = 0; ++ while (sent < job->len) { ++ rc = __serial_write(port, 0, job->buff + sent, job->len - sent); ++ if ((rc < 0) || signal_pending(current)) ++ break; ++ sent += rc; ++ if ((sent < job->len) && current->need_resched) ++ schedule(); ++ } ++ } + up(&port->sem); + + spin_lock_irqsave(&post_lock, flags); +@@ -725,6 +735,9 @@ + struct usb_serial_port *port = (struct usb_serial_port *) tty->driver_data; + int rc; + ++ if (!port) ++ return -ENODEV; ++ + if (!in_interrupt()) { + /* + * Run post_list to reduce a possiblity of reordered writes. |