summaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/quatech2.c
diff options
context:
space:
mode:
authorBill Pemberton <wfp5p@virginia.edu>2013-03-13 09:50:15 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-13 12:32:47 -0700
commit27b351c5546008c640b3e65152f60ca74b3706f1 (patch)
tree766c1d602d3942be6ba24086c7752926f70197c5 /drivers/usb/serial/quatech2.c
parent3f8bc5e4da29c7e05edeca6b475abb4fb01a5a13 (diff)
downloadlinux-27b351c5546008c640b3e65152f60ca74b3706f1.tar.gz
linux-27b351c5546008c640b3e65152f60ca74b3706f1.tar.bz2
linux-27b351c5546008c640b3e65152f60ca74b3706f1.zip
USB: quatech2: only write to the tty if the port is open.
The commit 2e124b4a390ca85325fae75764bef92f0547fa25 removed the checks that prevented qt2_process_read_urb() from trying to put chars into ttys that weren't actually opened. This resulted in 'tty is NULL' warnings from flush_to_ldisc() when the device was used. The devices use just one read urb for all ports. As a result qt2_process_read_urb() may be called with the current port set to a port number that has not been opened. Add a check if the port is open before calling tty_flip_buffer_push(). Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial/quatech2.c')
-rw-r--r--drivers/usb/serial/quatech2.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/usb/serial/quatech2.c b/drivers/usb/serial/quatech2.c
index 00e6c9bac8a3..d643a4d4d770 100644
--- a/drivers/usb/serial/quatech2.c
+++ b/drivers/usb/serial/quatech2.c
@@ -661,7 +661,9 @@ void qt2_process_read_urb(struct urb *urb)
__func__);
break;
}
- tty_flip_buffer_push(&port->port);
+
+ if (port_priv->is_open)
+ tty_flip_buffer_push(&port->port);
newport = *(ch + 3);
@@ -704,7 +706,8 @@ void qt2_process_read_urb(struct urb *urb)
tty_insert_flip_string(&port->port, ch, 1);
}
- tty_flip_buffer_push(&port->port);
+ if (port_priv->is_open)
+ tty_flip_buffer_push(&port->port);
}
static void qt2_write_bulk_callback(struct urb *urb)