USB: visor: always disable uart on close
authorJohan Hovold <jhovold@gmail.com>
Thu, 21 Mar 2013 11:37:47 +0000 (12:37 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Mar 2013 20:54:32 +0000 (13:54 -0700)
Always try to disable the uart on close.

Since the switch to tty ports, close will be called as part of shutdown
before disconnect returns. Hence there is no need to check the
disconnected flag, and we can put devices in disabled states also on
driver unbind.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/visor.c

index 1129aa73c23e93643ab273f578533ce85e04dc2c..7573ec8a084f3f55c1f2597c2f2b699e58790351 100644 (file)
@@ -257,24 +257,18 @@ static void visor_close(struct usb_serial_port *port)
 {
        unsigned char *transfer_buffer;
 
-       /* shutdown our urbs */
        usb_serial_generic_close(port);
        usb_kill_urb(port->interrupt_in_urb);
 
-       mutex_lock(&port->serial->disc_mutex);
-       if (!port->serial->disconnected) {
-               /* Try to send shutdown message, unless the device is gone */
-               transfer_buffer =  kmalloc(0x12, GFP_KERNEL);
-               if (transfer_buffer) {
-                       usb_control_msg(port->serial->dev,
+       transfer_buffer = kmalloc(0x12, GFP_KERNEL);
+       if (!transfer_buffer)
+               return;
+       usb_control_msg(port->serial->dev,
                                         usb_rcvctrlpipe(port->serial->dev, 0),
                                         VISOR_CLOSE_NOTIFICATION, 0xc2,
                                         0x0000, 0x0000,
                                         transfer_buffer, 0x12, 300);
-                       kfree(transfer_buffer);
-               }
-       }
-       mutex_unlock(&port->serial->disc_mutex);
+       kfree(transfer_buffer);
 }
 
 static void visor_read_int_callback(struct urb *urb)