[PATCH] UBUNTU: SAUCE: (no-up) Only let characters through when there are active readers.
Chris J Arges
chris.j.arges at canonical.com
Tue Oct 8 17:27:22 UTC 2013
From: Maximiliano Curia <maxy at gnuservers.com.ar>
BugLink: http://bugs.launchpad.net/bugs/1208740
If there is an active reader, previous behavior is in place. When there is no
active reader, input is blocked until the next read call unblocks it.
This fixes a long standing issue with readline when pasting more than 4096
bytes.
Signed-off-by: Chris J Arges <chris.j.arges at canonical.com>
Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
---
drivers/tty/n_tty.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index 4bf0fc0..cdc3b19 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -147,9 +147,16 @@ static int set_room(struct tty_struct *tty)
* pending newlines, let characters through without limit, so
* that erase characters will be handled. Other excess
* characters will be beeped.
+ * If there is no reader waiting for the input, block instead of
+ * letting the characters through.
*/
if (left <= 0)
- left = ldata->icanon && !ldata->canon_data;
+ if (waitqueue_active(&tty->read_wait)) {
+ left = ldata->icanon && !ldata->canon_data;
+ } else {
+ left = 0;
+ }
+
old_left = tty->receive_room;
tty->receive_room = left;
--
1.7.9.5
More information about the kernel-team
mailing list