]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
USB: serial: drop obsolete open-race workaround
authorJohan Hovold <johan@kernel.org>
Thu, 30 Mar 2017 13:46:30 +0000 (15:46 +0200)
committerJohan Hovold <johan@kernel.org>
Fri, 31 Mar 2017 11:14:39 +0000 (13:14 +0200)
Commit a65a6f14dc24 ("USB: serial: fix race between probe and open")
fixed a race between probe and open, which could lead to crashes when a
not yet fully initialised port was being opened.

This race was later incidentally closed by commit 7e73eca6a7b2 ("TTY:
move cdev_add to tty_register_device") which moved character-device
registration from tty_register_driver to tty_register_device, which
isn't called until the port has been fully set up.

Remove the now redundant workaround which had the negative side effect
of not allowing a port to be opened immediately after user space had
been notified of a new tty device.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/usb-serial.c

index 0fa2030c275c6af952fa74e2dbf986342c3329c1..c7ca95f64edc2b178dec37f852dbb90333efe637 100644 (file)
@@ -996,12 +996,6 @@ static int usb_serial_probe(struct usb_interface *interface,
                serial->attached = 1;
        }
 
-       /* 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 (allocate_minors(serial, num_ports)) {
                dev_err(ddev, "No more free serial minor numbers\n");
                goto probe_error;
@@ -1019,8 +1013,6 @@ static int usb_serial_probe(struct usb_interface *interface,
                        dev_err(ddev, "Error registering port device, continuing\n");
        }
 
-       serial->disconnected = 0;
-
        if (num_ports > 0)
                usb_serial_console_init(serial->port[0]->minor);
 exit: