diff options
Diffstat (limited to 'drivers/char/tty_ldisc.c')
| -rw-r--r-- | drivers/char/tty_ldisc.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/char/tty_ldisc.c b/drivers/char/tty_ldisc.c index a19e935847b0..913aa8d3f1c5 100644 --- a/drivers/char/tty_ldisc.c +++ b/drivers/char/tty_ldisc.c | |||
| @@ -867,15 +867,22 @@ void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty) | |||
| 867 | tty_ldisc_wait_idle(tty); | 867 | tty_ldisc_wait_idle(tty); |
| 868 | 868 | ||
| 869 | /* | 869 | /* |
| 870 | * Shutdown the current line discipline, and reset it to N_TTY. | 870 | * Now kill off the ldisc |
| 871 | * | ||
| 872 | * FIXME: this MUST get fixed for the new reflocking | ||
| 873 | */ | 871 | */ |
| 872 | tty_ldisc_close(tty, tty->ldisc); | ||
| 873 | tty_ldisc_put(tty->ldisc); | ||
| 874 | /* Force an oops if we mess this up */ | ||
| 875 | tty->ldisc = NULL; | ||
| 876 | |||
| 877 | /* Ensure the next open requests the N_TTY ldisc */ | ||
| 878 | tty_set_termios_ldisc(tty, N_TTY); | ||
| 874 | 879 | ||
| 875 | tty_ldisc_reinit(tty); | ||
| 876 | /* This will need doing differently if we need to lock */ | 880 | /* This will need doing differently if we need to lock */ |
| 877 | if (o_tty) | 881 | if (o_tty) |
| 878 | tty_ldisc_release(o_tty, NULL); | 882 | tty_ldisc_release(o_tty, NULL); |
| 883 | |||
| 884 | /* And the memory resources remaining (buffers, termios) will be | ||
| 885 | disposed of when the kref hits zero */ | ||
| 879 | } | 886 | } |
| 880 | 887 | ||
| 881 | /** | 888 | /** |
