| From 300420722e0734a4254f3b634e0f82664495d210 Mon Sep 17 00:00:00 2001 |
| From: Jiri Slaby <jslaby@suse.cz> |
| Date: Wed, 16 Nov 2011 16:27:08 +0100 |
| Subject: TTY: ldisc, move wait idle to caller |
| |
| From: Jiri Slaby <jslaby@suse.cz> |
| |
| commit 300420722e0734a4254f3b634e0f82664495d210 upstream. |
| |
| It is the only place where reinit is called from. And we really need |
| to wait for the old ldisc to go once. Actually this is the place where |
| the waiting originally was (before removed and re-added later). |
| |
| This will make the fix in the following patch easier to implement. |
| |
| Signed-off-by: Jiri Slaby <jslaby@suse.cz> |
| Cc: Dave Young <hidave.darkstar@gmail.com> |
| Cc: Dave Jones <davej@redhat.com> |
| Cc: Ben Hutchings <ben@decadent.org.uk> |
| Cc: Dmitriy Matrosov <sgf.dma@gmail.com> |
| Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/tty/tty_ldisc.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/tty/tty_ldisc.c |
| +++ b/drivers/tty/tty_ldisc.c |
| @@ -764,8 +764,6 @@ static int tty_ldisc_reinit(struct tty_s |
| if (IS_ERR(ld)) |
| return -1; |
| |
| - WARN_ON_ONCE(tty_ldisc_wait_idle(tty, 5 * HZ)); |
| - |
| tty_ldisc_close(tty, tty->ldisc); |
| tty_ldisc_put(tty->ldisc); |
| tty->ldisc = NULL; |
| @@ -849,6 +847,8 @@ void tty_ldisc_hangup(struct tty_struct |
| it means auditing a lot of other paths so this is |
| a FIXME */ |
| if (tty->ldisc) { /* Not yet closed */ |
| + WARN_ON_ONCE(tty_ldisc_wait_idle(tty, 5 * HZ)); |
| + |
| if (reset == 0) { |
| |
| if (!tty_ldisc_reinit(tty, tty->termios->c_line)) |