diff options
author | Johan Hovold <jhovold@gmail.com> | 2010-02-27 14:06:07 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-19 07:24:03 -0700 |
commit | 6313620228624ff4dcb78b1dbd459d0c208df126 (patch) | |
tree | cf0daaf2de0dcde24183375ff399d8906f91d294 /drivers/usb | |
parent | 0ae1474367a15e1b65a9deed3a73a14475a419fc (diff) | |
download | linux-stable-6313620228624ff4dcb78b1dbd459d0c208df126.tar.gz linux-stable-6313620228624ff4dcb78b1dbd459d0c208df126.tar.bz2 linux-stable-6313620228624ff4dcb78b1dbd459d0c208df126.zip |
USB: serial: fix softint not being called on errors
Make sure usb_serial_port_softint is called on errors also when using
multi urb writes.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/serial/generic.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index e560d1d7f628..214bf25bc3b5 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c @@ -500,23 +500,18 @@ void usb_serial_generic_write_bulk_callback(struct urb *urb) if (port->urbs_in_flight < 0) port->urbs_in_flight = 0; spin_unlock_irqrestore(&port->lock, flags); - - if (status) { - dbg("%s - nonzero multi-urb write bulk status " - "received: %d", __func__, status); - return; - } } else { port->write_urb_busy = 0; - if (status) { - dbg("%s - nonzero multi-urb write bulk status " - "received: %d", __func__, status); + if (status) kfifo_reset_out(&port->write_fifo); - } else + else usb_serial_generic_write_start(port); } + if (status) + dbg("%s - non-zero urb status: %d", __func__, status); + usb_serial_port_softint(port); } EXPORT_SYMBOL_GPL(usb_serial_generic_write_bulk_callback); |