aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/whiteheat.c
diff options
context:
space:
mode:
authorOliver Neukum <oliver@neukum.org>2008-01-21 11:44:10 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-01 17:35:04 -0500
commite33fe4d86f91127f6f7d931ff59ed6cbda06e72b (patch)
tree7af352e8fc696220a06c6e2a9b9006a0ea5ee075 /drivers/usb/serial/whiteheat.c
parent004b4f2d4448cff7f13871c05d744b00a7c74d4a (diff)
USB: make sure usb serial drivers don't flush to logically disconnected devices
If disconnect() is called for a logical disconnect, no more IO must be done after disconnect() returns, or the old and new drivers may conflict. This patch avoids this by using the flag and lock introduced by the earlier patch for the mos7720 driver. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial/whiteheat.c')
-rw-r--r--drivers/usb/serial/whiteheat.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index f5033d482eee..38726ef3132b 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -658,11 +658,14 @@ static void whiteheat_close(struct usb_serial_port *port, struct file * filp)
658 struct list_head *tmp2; 658 struct list_head *tmp2;
659 659
660 dbg("%s - port %d", __FUNCTION__, port->number); 660 dbg("%s - port %d", __FUNCTION__, port->number);
661 661
662 mutex_lock(&port->serial->disc_mutex);
662 /* filp is NULL when called from usb_serial_disconnect */ 663 /* filp is NULL when called from usb_serial_disconnect */
663 if (filp && (tty_hung_up_p(filp))) { 664 if ((filp && (tty_hung_up_p(filp))) || port->serial->disconnected) {
665 mutex_unlock(&port->serial->disc_mutex);
664 return; 666 return;
665 } 667 }
668 mutex_unlock(&port->serial->disc_mutex);
666 669
667 port->tty->closing = 1; 670 port->tty->closing = 1;
668 671