USB: serial: ftd_sio usb: move status check
authorJason Wessel <jason.wessel@windriver.com>
Mon, 11 May 2009 20:24:08 +0000 (15:24 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 04:44:45 +0000 (21:44 -0700)
Alan Stern commented that the private driver counts must be updated
regard less of the status return on the urb when the write call back
is executed.

This patch alters the behavior to update the private driver counts by
simply moving the status check to after the driver count update.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/ftdi_sio.c

index 74cc3c83160464fa4aa12e79659fce75ba52b1b9..fc527de734653260d283062d09e7f20d5f1e3af6 100644 (file)
@@ -1884,11 +1884,6 @@ static void ftdi_write_bulk_callback(struct urb *urb)
 
        dbg("%s - port %d", __func__, port->number);
 
-       if (status) {
-               dbg("nonzero write bulk status received: %d", status);
-               return;
-       }
-
        priv = usb_get_serial_port_data(port);
        if (!priv) {
                dbg("%s - bad port private data pointer - exiting", __func__);
@@ -1906,6 +1901,11 @@ static void ftdi_write_bulk_callback(struct urb *urb)
        priv->tx_outstanding_bytes -= countback;
        spin_unlock_irqrestore(&priv->tx_lock, flags);
 
+       if (status) {
+               dbg("nonzero write bulk status received: %d", status);
+               return;
+       }
+
        usb_serial_port_softint(port);
 } /* ftdi_write_bulk_callback */