USB: ftdi_sio: clean up read completion handler
authorJohan Hovold <jhovold@gmail.com>
Wed, 7 Oct 2009 18:05:06 +0000 (20:05 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Oct 2009 20:52:05 +0000 (13:52 -0700)
Remove superfluous error checks in completion handler:

 - No need to check private data and urb pointers as we check urb-status
   before dereferencing priv (which is not freed until urb has been killed
   on close).
 - No need to check tty as it is checked again when processing.
 - No need to check urb->number_of_packets on bulk urb.

Note that both private data and tty are checked again before processing
(possibly from work queue which also is cancelled on close).

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/ftdi_sio.c

index bfb23d64bc6a7a89ea50da76e59b5ff26b3e5516..75c84d9b080d0db144f4b6ee1c6e7ff8ad904c00 100644 (file)
@@ -2008,39 +2008,14 @@ static int ftdi_chars_in_buffer(struct tty_struct *tty)
 static void ftdi_read_bulk_callback(struct urb *urb)
 {
        struct usb_serial_port *port = urb->context;
-       struct tty_struct *tty;
        struct ftdi_private *priv;
        int status = urb->status;
 
-       if (urb->number_of_packets > 0) {
-               dev_err(&port->dev, "%s transfer_buffer_length %d "
-                       "actual_length %d number of packets %d\n", __func__,
-                       urb->transfer_buffer_length,
-                       urb->actual_length, urb->number_of_packets);
-               dev_err(&port->dev, "%s transfer_flags %x\n", __func__,
-                       urb->transfer_flags);
-       }
-
        dbg("%s - port %d", __func__, port->number);
 
        if (port->port.count <= 0)
                return;
 
-       tty = tty_port_tty_get(&port->port);
-       if (!tty) {
-               dbg("%s - bad tty pointer - exiting", __func__);
-               return;
-       }
-
-       priv = usb_get_serial_port_data(port);
-       if (!priv) {
-               dbg("%s - bad port private data pointer - exiting", __func__);
-               goto out;
-       }
-
-       if (urb != port->read_urb)
-               dev_err(&port->dev, "%s - Not my urb!\n", __func__);
-
        if (status) {
                /* This will happen at close every time so it is a dbg not an
                   err */
@@ -2048,9 +2023,8 @@ static void ftdi_read_bulk_callback(struct urb *urb)
                goto out;
        }
 
+       priv = usb_get_serial_port_data(port);
        ftdi_process_read(&priv->rx_work.work);
-out:
-       tty_kref_put(tty);
 } /* ftdi_read_bulk_callback */