aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/option.c
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2008-04-08 12:16:06 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-25 00:16:55 -0400
commita5b6f60c5a30c494017c7a2d11c4067f90d3d0df (patch)
tree2f80d1a6c2655c5c12f40cafbc47516284934d42 /drivers/usb/serial/option.c
parent441b62c1edb986827154768d89bbac0ba779984f (diff)
usb serial: more fixes and groundwork for tty changes
- If a termios change fails due to lack of memory we should copy the old settings back over as the device has not changed - Note various locking problems - kl5kusb105 had various remaining tty flag handling problems - Make safe_serial use tty_insert_flip_string not open coded loops - set termios speed properly in usb_serial Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial/option.c')
-rw-r--r--drivers/usb/serial/option.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 920241897c95..a83892627d66 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -656,6 +656,7 @@ static int option_write_room(struct usb_serial_port *port)
656 656
657 portdata = usb_get_serial_port_data(port); 657 portdata = usb_get_serial_port_data(port);
658 658
659
659 for (i=0; i < N_OUT_URB; i++) { 660 for (i=0; i < N_OUT_URB; i++) {
660 this_urb = portdata->out_urbs[i]; 661 this_urb = portdata->out_urbs[i];
661 if (this_urb && !test_bit(i, &portdata->out_busy)) 662 if (this_urb && !test_bit(i, &portdata->out_busy))
@@ -677,6 +678,8 @@ static int option_chars_in_buffer(struct usb_serial_port *port)
677 678
678 for (i=0; i < N_OUT_URB; i++) { 679 for (i=0; i < N_OUT_URB; i++) {
679 this_urb = portdata->out_urbs[i]; 680 this_urb = portdata->out_urbs[i];
681 /* FIXME: This locking is insufficient as this_urb may
682 go unused during the test */
680 if (this_urb && test_bit(i, &portdata->out_busy)) 683 if (this_urb && test_bit(i, &portdata->out_busy))
681 data_len += this_urb->transfer_buffer_length; 684 data_len += this_urb->transfer_buffer_length;
682 } 685 }