forked from Minki/linux
Staging: serqt_usb2: add missing calls to tty_kref_put()
tty_port_tty_get() was called without a corresponding tty_kref_put() in qt_read_bulk_callback() and qt_close(). Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
4733fd328f
commit
f3a756883a
@ -360,18 +360,18 @@ static void qt_read_bulk_callback(struct urb *urb)
|
|||||||
if (port_paranoia_check(port, __func__) != 0) {
|
if (port_paranoia_check(port, __func__) != 0) {
|
||||||
dbg("%s - port_paranoia_check, exiting\n", __func__);
|
dbg("%s - port_paranoia_check, exiting\n", __func__);
|
||||||
qt_port->ReadBulkStopped = 1;
|
qt_port->ReadBulkStopped = 1;
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!serial) {
|
if (!serial) {
|
||||||
dbg("%s - bad serial pointer, exiting\n", __func__);
|
dbg("%s - bad serial pointer, exiting\n", __func__);
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
if (qt_port->closePending == 1) {
|
if (qt_port->closePending == 1) {
|
||||||
/* Were closing , stop reading */
|
/* Were closing , stop reading */
|
||||||
dbg("%s - (qt_port->closepending == 1\n", __func__);
|
dbg("%s - (qt_port->closepending == 1\n", __func__);
|
||||||
qt_port->ReadBulkStopped = 1;
|
qt_port->ReadBulkStopped = 1;
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -381,7 +381,7 @@ static void qt_read_bulk_callback(struct urb *urb)
|
|||||||
*/
|
*/
|
||||||
if (qt_port->RxHolding == 1) {
|
if (qt_port->RxHolding == 1) {
|
||||||
qt_port->ReadBulkStopped = 1;
|
qt_port->ReadBulkStopped = 1;
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (urb->status) {
|
if (urb->status) {
|
||||||
@ -389,7 +389,7 @@ static void qt_read_bulk_callback(struct urb *urb)
|
|||||||
|
|
||||||
dbg("%s - nonzero read bulk status received: %d\n",
|
dbg("%s - nonzero read bulk status received: %d\n",
|
||||||
__func__, urb->status);
|
__func__, urb->status);
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tty && RxCount) {
|
if (tty && RxCount) {
|
||||||
@ -463,6 +463,8 @@ static void qt_read_bulk_callback(struct urb *urb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
schedule_work(&port->work);
|
schedule_work(&port->work);
|
||||||
|
exit:
|
||||||
|
tty_kref_put(tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1041,7 +1043,7 @@ static void qt_block_until_empty(struct tty_struct *tty,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qt_close( struct usb_serial_port *port)
|
static void qt_close(struct usb_serial_port *port)
|
||||||
{
|
{
|
||||||
struct usb_serial *serial = port->serial;
|
struct usb_serial *serial = port->serial;
|
||||||
struct quatech_port *qt_port;
|
struct quatech_port *qt_port;
|
||||||
@ -1068,6 +1070,7 @@ static void qt_close( struct usb_serial_port *port)
|
|||||||
/* wait up to for transmitter to empty */
|
/* wait up to for transmitter to empty */
|
||||||
if (serial->dev)
|
if (serial->dev)
|
||||||
qt_block_until_empty(tty, qt_port);
|
qt_block_until_empty(tty, qt_port);
|
||||||
|
tty_kref_put(tty);
|
||||||
|
|
||||||
/* Close uart channel */
|
/* Close uart channel */
|
||||||
status = qt_close_channel(serial, index);
|
status = qt_close_channel(serial, index);
|
||||||
|
Loading…
Reference in New Issue
Block a user