summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Khoroshilov2012-09-13 20:56:55 +0200
committerGreg Kroah-Hartman2012-09-14 06:48:48 +0200
commit8321652ae22f38830af5b553f3a316d68948ddce (patch)
tree50f5c69c176d43d5e86e2cc3382dc199c3bce427
parentdrivers/usb/misc/rio500.c: removes unnecessary semicolon (diff)
downloadkernel-qcow2-linux-8321652ae22f38830af5b553f3a316d68948ddce.tar.gz
kernel-qcow2-linux-8321652ae22f38830af5b553f3a316d68948ddce.tar.xz
kernel-qcow2-linux-8321652ae22f38830af5b553f3a316d68948ddce.zip
USB: omninet: fix potential tty NULL dereference
Add check for return value of tty_port_tty_get, since it can return NULL after port hangup that may happen anytime. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/serial/omninet.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
index d31f661d758c..f524cd910e2c 100644
--- a/drivers/usb/serial/omninet.c
+++ b/drivers/usb/serial/omninet.c
@@ -185,10 +185,12 @@ static void omninet_read_bulk_callback(struct urb *urb)
if (urb->actual_length && header->oh_len) {
struct tty_struct *tty = tty_port_tty_get(&port->port);
- tty_insert_flip_string(tty, data + OMNINET_DATAOFFSET,
+ if (tty) {
+ tty_insert_flip_string(tty, data + OMNINET_DATAOFFSET,
header->oh_len);
- tty_flip_buffer_push(tty);
- tty_kref_put(tty);
+ tty_flip_buffer_push(tty);
+ tty_kref_put(tty);
+ }
}
/* Continue trying to always read */