diff options
author | Alexey Khoroshilov <khoroshilov@ispras.ru> | 2012-09-13 20:56:55 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-14 06:48:48 +0200 |
commit | 8321652ae22f38830af5b553f3a316d68948ddce (patch) | |
tree | 50f5c69c176d43d5e86e2cc3382dc199c3bce427 /drivers | |
parent | drivers/usb/misc/rio500.c: removes unnecessary semicolon (diff) | |
download | linux-8321652ae22f38830af5b553f3a316d68948ddce.tar.xz 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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/serial/omninet.c | 8 |
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 */ |