Merge remote-tracking branch 'common/android-3.0' into develop-3.0-jb
[firefly-linux-kernel-4.4.55.git] / drivers / usb / serial / usb-serial.c
index bf8a940a353a63c971d434f221e79fb28e351b3f..c4fd197e2bd3eca5c4d266b02126324210d5241b 100755 (executable)
@@ -1102,6 +1102,12 @@ int usb_serial_probe(struct usb_interface *interface,
                MT6229_USB = 0;
 #endif
 
+       /* Avoid race with tty_open and serial_install by setting the
+        * disconnected flag and not clearing it until all ports have been
+        * registered.
+        */
+       serial->disconnected = 1;
+
        if (get_free_serial(serial, num_ports, &minor) == NULL) {
                dev_err(&interface->dev, "No more free serial devices\n");
                goto probe_error;
@@ -1126,6 +1132,8 @@ int usb_serial_probe(struct usb_interface *interface,
                }
        }
 
+       serial->disconnected = 0;
+
        usb_serial_console_init(debug, minor);
 
 exit: