Skip to content

Commit

Permalink
tty: Fix the digi acceleport driver NULL checks
Browse files Browse the repository at this point in the history
This now refcounts but doesn't actually check the reference was obtained in
all the places it should.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Cox authored and Greg Kroah-Hartman committed Aug 10, 2010
1 parent 7479db0 commit 4287341
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions drivers/usb/serial/digi_acceleport.c
Original file line number Diff line number Diff line change
Expand Up @@ -609,8 +609,10 @@ static void digi_wakeup_write_lock(struct work_struct *work)
static void digi_wakeup_write(struct usb_serial_port *port)
{
struct tty_struct *tty = tty_port_tty_get(&port->port);
tty_wakeup(tty);
tty_kref_put(tty);
if (tty) {
tty_wakeup(tty);
tty_kref_put(tty);
}
}


Expand Down Expand Up @@ -1682,7 +1684,7 @@ static int digi_read_inb_callback(struct urb *urb)
priv->dp_throttle_restart = 1;

/* receive data */
if (opcode == DIGI_CMD_RECEIVE_DATA) {
if (tty && opcode == DIGI_CMD_RECEIVE_DATA) {
/* get flag from port_status */
flag = 0;

Expand Down Expand Up @@ -1763,10 +1765,12 @@ static int digi_read_oob_callback(struct urb *urb)
return -1;

tty = tty_port_tty_get(&port->port);

rts = 0;
rts = tty->termios->c_cflag & CRTSCTS;
if (tty)
rts = tty->termios->c_cflag & CRTSCTS;

if (opcode == DIGI_CMD_READ_INPUT_SIGNALS) {
if (tty && opcode == DIGI_CMD_READ_INPUT_SIGNALS) {
spin_lock(&priv->dp_port_lock);
/* convert from digi flags to termiox flags */
if (val & DIGI_READ_INPUT_SIGNALS_CTS) {
Expand Down

0 comments on commit 4287341

Please sign in to comment.