diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2008-04-08 12:16:06 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-04-25 00:16:55 -0400 |
commit | a5b6f60c5a30c494017c7a2d11c4067f90d3d0df (patch) | |
tree | 2f80d1a6c2655c5c12f40cafbc47516284934d42 /drivers/usb/serial/generic.c | |
parent | 441b62c1edb986827154768d89bbac0ba779984f (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/generic.c')
-rw-r--r-- | drivers/usb/serial/generic.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index 2078667db4aa..65765ce76251 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c | |||
@@ -262,13 +262,14 @@ int usb_serial_generic_write_room (struct usb_serial_port *port) | |||
262 | 262 | ||
263 | dbg("%s - port %d", __func__, port->number); | 263 | dbg("%s - port %d", __func__, port->number); |
264 | 264 | ||
265 | /* FIXME: Locking */ | ||
265 | if (serial->num_bulk_out) { | 266 | if (serial->num_bulk_out) { |
266 | if (!(port->write_urb_busy)) | 267 | if (!(port->write_urb_busy)) |
267 | room = port->bulk_out_size; | 268 | room = port->bulk_out_size; |
268 | } | 269 | } |
269 | 270 | ||
270 | dbg("%s - returns %d", __func__, room); | 271 | dbg("%s - returns %d", __func__, room); |
271 | return (room); | 272 | return room; |
272 | } | 273 | } |
273 | 274 | ||
274 | int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port) | 275 | int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port) |
@@ -278,6 +279,7 @@ int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port) | |||
278 | 279 | ||
279 | dbg("%s - port %d", __func__, port->number); | 280 | dbg("%s - port %d", __func__, port->number); |
280 | 281 | ||
282 | /* FIXME: Locking */ | ||
281 | if (serial->num_bulk_out) { | 283 | if (serial->num_bulk_out) { |
282 | if (port->write_urb_busy) | 284 | if (port->write_urb_busy) |
283 | chars = port->write_urb->transfer_buffer_length; | 285 | chars = port->write_urb->transfer_buffer_length; |
@@ -368,7 +370,6 @@ void usb_serial_generic_write_bulk_callback (struct urb *urb) | |||
368 | __func__, status); | 370 | __func__, status); |
369 | return; | 371 | return; |
370 | } | 372 | } |
371 | |||
372 | usb_serial_port_softint(port); | 373 | usb_serial_port_softint(port); |
373 | } | 374 | } |
374 | EXPORT_SYMBOL_GPL(usb_serial_generic_write_bulk_callback); | 375 | EXPORT_SYMBOL_GPL(usb_serial_generic_write_bulk_callback); |