Revert "tty: Fix ldisc crash on reopened tty"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Mar 2017 05:50:49 +0000 (07:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Mar 2017 05:50:49 +0000 (07:50 +0200)
This reverts commit 71472fa9c52b1da27663c275d416d8654b905f05.  It caused
merge issues, and Dmitry found some review issues.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: Michael Neuling <mikey@neuling.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_ldisc.c

index 4ee7742dced3be9bfd28cd4f5e33f65cb4af5276..68947f6de5ad6339adea804182597229c3eb1d38 100644 (file)
@@ -669,17 +669,16 @@ int tty_ldisc_reinit(struct tty_struct *tty, int disc)
                tty_ldisc_put(tty->ldisc);
        }
 
+       /* switch the line discipline */
+       tty->ldisc = ld;
        tty_set_termios_ldisc(tty, disc);
-       retval = tty_ldisc_open(tty, ld);
+       retval = tty_ldisc_open(tty, tty->ldisc);
        if (retval) {
                if (!WARN_ON(disc == N_TTY)) {
-                       tty_ldisc_put(ld);
-                       ld = NULL;
+                       tty_ldisc_put(tty->ldisc);
+                       tty->ldisc = NULL;
                }
        }
-
-       /* switch the line discipline */
-       smp_store_release(&tty->ldisc, ld);
        return retval;
 }