]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
USB: serial: remove overly defensive port tests
authorJohan Hovold <jhovold@gmail.com>
Mon, 26 May 2014 17:23:34 +0000 (19:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 May 2014 22:04:08 +0000 (15:04 -0700)
The only way a port pointer may be NULL is if probe() failed, and in
that case neither disconnect(), resume(), or reset_resume() will be
called.

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

index 6d40d56378d77d0a1e4c65f66a2b46cbd81fe396..02de3110fe940e63308e7707a966c539bb620403 100644 (file)
@@ -1060,6 +1060,7 @@ static void usb_serial_disconnect(struct usb_interface *interface)
        struct usb_serial *serial = usb_get_intfdata(interface);
        struct device *dev = &interface->dev;
        struct usb_serial_port *port;
+       struct tty_struct *tty;
 
        usb_serial_console_disconnect(serial);
 
@@ -1070,18 +1071,16 @@ static void usb_serial_disconnect(struct usb_interface *interface)
 
        for (i = 0; i < serial->num_ports; ++i) {
                port = serial->port[i];
-               if (port) {
-                       struct tty_struct *tty = tty_port_tty_get(&port->port);
-                       if (tty) {
-                               tty_vhangup(tty);
-                               tty_kref_put(tty);
-                       }
-                       usb_serial_port_poison_urbs(port);
-                       wake_up_interruptible(&port->port.delta_msr_wait);
-                       cancel_work_sync(&port->work);
-                       if (device_is_registered(&port->dev))
-                               device_del(&port->dev);
+               tty = tty_port_tty_get(&port->port);
+               if (tty) {
+                       tty_vhangup(tty);
+                       tty_kref_put(tty);
                }
+               usb_serial_port_poison_urbs(port);
+               wake_up_interruptible(&port->port.delta_msr_wait);
+               cancel_work_sync(&port->work);
+               if (device_is_registered(&port->dev))
+                       device_del(&port->dev);
        }
        if (serial->type->disconnect)
                serial->type->disconnect(serial);
@@ -1094,7 +1093,6 @@ static void usb_serial_disconnect(struct usb_interface *interface)
 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
 {
        struct usb_serial *serial = usb_get_intfdata(intf);
-       struct usb_serial_port *port;
        int i, r = 0;
 
        serial->suspending = 1;
@@ -1112,12 +1110,8 @@ int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
                }
        }
 
-       for (i = 0; i < serial->num_ports; ++i) {
-               port = serial->port[i];
-               if (port)
-                       usb_serial_port_poison_urbs(port);
-       }
-
+       for (i = 0; i < serial->num_ports; ++i)
+               usb_serial_port_poison_urbs(serial->port[i]);
 err_out:
        return r;
 }
@@ -1125,14 +1119,10 @@ EXPORT_SYMBOL(usb_serial_suspend);
 
 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial)
 {
-       struct usb_serial_port *port;
        int i;
 
-       for (i = 0; i < serial->num_ports; ++i) {
-               port = serial->port[i];
-               if (port)
-                       usb_serial_port_unpoison_urbs(port);
-       }
+       for (i = 0; i < serial->num_ports; ++i)
+               usb_serial_port_unpoison_urbs(serial->port[i]);
 }
 
 int usb_serial_resume(struct usb_interface *intf)