public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Wang YanQing <udknight@gmail.com>
Subject: [ 08/33] TTY: Fix tty miss restart after we turn off flow-control
Date: Wed,  5 Jun 2013 13:52:46 -0700	[thread overview]
Message-ID: <20130605204704.420271012@linuxfoundation.org> (raw)
In-Reply-To: <20130605204702.359510786@linuxfoundation.org>

3.0-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Wang YanQing <udknight@gmail.com>

commit dab73b4eb9ef924a2b90dab84e539076d82b256f upstream.

I meet emacs hang in start if I do the operation below:
  1: echo 3 > /proc/sys/vm/drop_caches
  2: emacs BigFile
  3: Press CTRL-S follow 2 immediately

Then emacs hang on, CTRL-Q can't resume, the terminal
hang on, you can do nothing with this terminal except
close it.

The reason is before emacs takeover control the tty,
we use CTRL-S to XOFF it. Then when emacs takeover the
control, it may don't use the flow-control, so emacs hang.
This patch fix it.

This patch will fix a kind of strange tty relation hang problem,
I believe I meet it with vim in ssh, and also see below bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=465823

Signed-off-by: Wang YanQing <udknight@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/tty/n_tty.c |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -1531,6 +1531,14 @@ static void n_tty_set_termios(struct tty
 			tty->real_raw = 0;
 	}
 	n_tty_set_room(tty);
+	/*
+	 * Fix tty hang when I_IXON(tty) is cleared, but the tty
+	 * been stopped by STOP_CHAR(tty) before it.
+	 */
+	if (!I_IXON(tty) && old && (old->c_iflag & IXON) && !tty->flow_stopped) {
+		start_tty(tty);
+	}
+
 	/* The termios change make the tty ready for I/O */
 	wake_up_interruptible(&tty->write_wait);
 	wake_up_interruptible(&tty->read_wait);



  parent reply	other threads:[~2013-06-05 20:53 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-05 20:52 [ 00/33] 3.0.81-stable review Greg Kroah-Hartman
2013-06-05 20:52 ` [ 01/33] avr32: fix relocation check for signed 18-bit offset Greg Kroah-Hartman
2013-06-05 20:52 ` [ 02/33] ARM: plat-orion: Fix num_resources and id for ge10 and ge11 Greg Kroah-Hartman
2013-06-05 20:52 ` [ 03/33] staging: vt6656: use free_netdev instead of kfree Greg Kroah-Hartman
2013-06-05 20:52 ` [ 04/33] usb: option: Add Telewell TW-LTE 4G Greg Kroah-Hartman
2013-06-05 20:52 ` [ 05/33] USB: option: add device IDs for Dell 5804 (Novatel E371) WWAN card Greg Kroah-Hartman
2013-06-05 20:52 ` [ 06/33] USB: ftdi_sio: Add support for Newport CONEX motor drivers Greg Kroah-Hartman
2013-06-05 20:52 ` [ 07/33] USB: cxacru: potential underflow in cxacru_cm_get_array() Greg Kroah-Hartman
2013-06-05 20:52 ` Greg Kroah-Hartman [this message]
2013-06-05 20:52 ` [ 09/33] USB: Blacklisted Cinterions PLxx WWAN Interface Greg Kroah-Hartman
2013-06-05 20:52 ` [ 10/33] USB: reset resume quirk needed by a hub Greg Kroah-Hartman
2013-06-05 20:52 ` [ 11/33] USB: UHCI: fix for suspend of virtual HP controller Greg Kroah-Hartman
2013-06-05 20:52 ` [ 12/33] cifs: only set ops for inodes in I_NEW state Greg Kroah-Hartman
2013-06-05 20:52 ` [ 13/33] fat: fix possible overflow for fat_clusters Greg Kroah-Hartman
2013-06-05 20:52 ` [ 14/33] ocfs2: goto out_unlock if ocfs2_get_clusters_nocache() failed in ocfs2_fiemap() Greg Kroah-Hartman
2013-06-05 20:52 ` [ 15/33] Kirkwood: Enable PCIe port 1 on QNAP TS-11x/TS-21x Greg Kroah-Hartman
2013-06-05 20:52 ` [ 16/33] mm compaction: fix of improper cache flush in migration code Greg Kroah-Hartman
2013-06-05 20:52 ` [ 17/33] klist: del waiter from klist_remove_waiters before wakeup waitting process Greg Kroah-Hartman
2013-06-05 20:52 ` [ 18/33] wait: fix false timeouts when using wait_event_timeout() Greg Kroah-Hartman
2013-06-05 20:52 ` [ 19/33] nilfs2: fix issue of nilfs_set_page_dirty() for page at EOF boundary Greg Kroah-Hartman
2013-06-05 20:52 ` [ 20/33] mm: mmu_notifier: re-fix freed page still mapped in secondary MMU Greg Kroah-Hartman
2013-06-05 20:52 ` [ 21/33] drivers/block/brd.c: fix brd_lookup_page() race Greg Kroah-Hartman
2013-06-05 20:53 ` [ 22/33] mm/THP: use pmd_populate() to update the pmd with pgtable_t pointer Greg Kroah-Hartman
2013-06-05 20:53 ` [ 23/33] um: Serve io_remap_pfn_range() Greg Kroah-Hartman
2013-06-05 20:53 ` [ 24/33] drm/radeon: fix card_posted check for newer asics Greg Kroah-Hartman
2013-06-05 20:53 ` [ 25/33] cifs: fix potential buffer overrun when composing a new options string Greg Kroah-Hartman
2013-06-05 20:53 ` [ 26/33] USB: io_ti: Fix NULL dereference in chase_port() Greg Kroah-Hartman
2013-06-05 20:53 ` [ 27/33] libata: make ata_exec_internal_sg honor DMADIR Greg Kroah-Hartman
2013-06-05 20:53 ` [ 28/33] xen/events: Handle VIRQ_TIMER before any other hardirq in event loop Greg Kroah-Hartman
2013-06-05 20:53 ` [ 29/33] jfs: fix a couple races Greg Kroah-Hartman
2013-06-05 20:53 ` [ 30/33] ALSA: usb-audio: fix possible hang and overflow in parse_uac2_sample_rate_range() Greg Kroah-Hartman
2013-06-05 20:53 ` [ 31/33] ALSA: usb-audio: avoid integer overflow in create_fixed_stream_quirk() Greg Kroah-Hartman
2013-06-05 20:53 ` [ 32/33] mac80211: close AP_VLAN interfaces before unregistering all Greg Kroah-Hartman
2013-06-05 20:53 ` [ 33/33] thinkpad-acpi: recognize latest V-Series using DMI_BIOS_VENDOR Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130605204704.420271012@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=udknight@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox