projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
8e512ab
)
USB: quatech2: fix io after disconnect
author
Johan Hovold
<jhovold@gmail.com>
Thu, 25 Oct 2012 08:29:10 +0000
(10:29 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 25 Oct 2012 16:36:58 +0000
(09:36 -0700)
Make sure no control urb is submitted during close after a disconnect by
checking the disconnected flag.
Cc: <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/quatech2.c
patch
|
blob
|
history
diff --git
a/drivers/usb/serial/quatech2.c
b/drivers/usb/serial/quatech2.c
index 7e8d8f32b634da76c6ab6320999c48bb3a48861c..ffcfc962ab10b5a4043cd900f8ca6e90094ff417 100644
(file)
--- a/
drivers/usb/serial/quatech2.c
+++ b/
drivers/usb/serial/quatech2.c
@@
-427,6
+427,12
@@
static void qt2_close(struct usb_serial_port *port)
port_priv->urb_in_use = false;
spin_unlock_irqrestore(&port_priv->urb_lock, flags);
+ mutex_lock(&port->serial->disc_mutex);
+ if (port->serial->disconnected) {
+ mutex_unlock(&port->serial->disc_mutex);
+ return;
+ }
+
/* flush the port transmit buffer */
i = usb_control_msg(serial->dev,
usb_rcvctrlpipe(serial->dev, 0),
@@
-458,6
+464,7
@@
static void qt2_close(struct usb_serial_port *port)
dev_err(&port->dev, "%s - close port failed %i\n",
__func__, i);
+ mutex_unlock(&port->serial->disc_mutex);
}
static void qt2_disconnect(struct usb_serial *serial)