|
@@ -570,13 +570,15 @@ int tty_set_ldisc(struct tty_struct *tty, int ldisc)
|
|
|
tty_ldisc_restore(tty, old_ldisc);
|
|
|
}
|
|
|
|
|
|
- /* At this point we hold a reference to the new ldisc and a
|
|
|
- a reference to the old ldisc. If we ended up flipping back
|
|
|
- to the existing ldisc we have two references to it */
|
|
|
-
|
|
|
if (tty->ldisc->ops->num != old_ldisc->ops->num && tty->ops->set_ldisc)
|
|
|
tty->ops->set_ldisc(tty);
|
|
|
|
|
|
+ /* At this point we hold a reference to the new ldisc and a
|
|
|
+ reference to the old ldisc, or we hold two references to
|
|
|
+ the old ldisc (if it was restored as part of error cleanup
|
|
|
+ above). In either case, releasing a single reference from
|
|
|
+ the old ldisc is correct. */
|
|
|
+
|
|
|
tty_ldisc_put(old_ldisc);
|
|
|
|
|
|
/*
|