diff options
Diffstat (limited to 'drivers/usb/serial/io_ti.c')
-rw-r--r-- | drivers/usb/serial/io_ti.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c index ceaeebaa6f90..a76b95d32157 100644 --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c | |||
@@ -1674,6 +1674,12 @@ static void edge_interrupt_callback(struct urb *urb) | |||
1674 | function = TIUMP_GET_FUNC_FROM_CODE(data[0]); | 1674 | function = TIUMP_GET_FUNC_FROM_CODE(data[0]); |
1675 | dev_dbg(dev, "%s - port_number %d, function %d, info 0x%x\n", __func__, | 1675 | dev_dbg(dev, "%s - port_number %d, function %d, info 0x%x\n", __func__, |
1676 | port_number, function, data[1]); | 1676 | port_number, function, data[1]); |
1677 | |||
1678 | if (port_number >= edge_serial->serial->num_ports) { | ||
1679 | dev_err(dev, "bad port number %d\n", port_number); | ||
1680 | goto exit; | ||
1681 | } | ||
1682 | |||
1677 | port = edge_serial->serial->port[port_number]; | 1683 | port = edge_serial->serial->port[port_number]; |
1678 | edge_port = usb_get_serial_port_data(port); | 1684 | edge_port = usb_get_serial_port_data(port); |
1679 | if (!edge_port) { | 1685 | if (!edge_port) { |
@@ -1755,7 +1761,7 @@ static void edge_bulk_in_callback(struct urb *urb) | |||
1755 | 1761 | ||
1756 | port_number = edge_port->port->port_number; | 1762 | port_number = edge_port->port->port_number; |
1757 | 1763 | ||
1758 | if (edge_port->lsr_event) { | 1764 | if (urb->actual_length > 0 && edge_port->lsr_event) { |
1759 | edge_port->lsr_event = 0; | 1765 | edge_port->lsr_event = 0; |
1760 | dev_dbg(dev, "%s ===== Port %u LSR Status = %02x, Data = %02x ======\n", | 1766 | dev_dbg(dev, "%s ===== Port %u LSR Status = %02x, Data = %02x ======\n", |
1761 | __func__, port_number, edge_port->lsr_mask, *data); | 1767 | __func__, port_number, edge_port->lsr_mask, *data); |