From 684d263e75a6a7ede638afa60e35a238e24c12ba Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 26 Jan 2010 15:59:18 +0000 Subject: linux-moblin: Add 2.6.31.5 Signed-off-by: Richard Purdie --- ...tty-move-echoctl-check-and-clean-up-logic.patch | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.32-n_tty-move-echoctl-check-and-clean-up-logic.patch (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.32-n_tty-move-echoctl-check-and-clean-up-logic.patch') diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.32-n_tty-move-echoctl-check-and-clean-up-logic.patch b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.32-n_tty-move-echoctl-check-and-clean-up-logic.patch new file mode 100644 index 000000000..3a7e0fd94 --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.32-n_tty-move-echoctl-check-and-clean-up-logic.patch @@ -0,0 +1,91 @@ +commit 62b263585bb5005d44a764c90d80f9c4bb8188c1 +Author: Joe Peterson +Date: Wed Sep 9 15:03:47 2009 -0600 + + n_tty: move echoctl check and clean up logic + + Check L_ECHOCTL before insertting a character in the echo buffer + (rather than as the buffer is processed), to be more consistent with + when all other L_ flags are checked. Also cleaned up the related logic. + + Note that this and the previous patch ("n_tty: honor opost flag for echoes") + were verified together by the reporters of the bug that patch addresses + (http://bugs.linuxbase.org/show_bug.cgi?id=2692), and the test now passes. + + Signed-off-by: Joe Peterson + Cc: Linus Torvalds + Signed-off-by: Greg Kroah-Hartman + +diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c +index e6eeeb2..2e50f4d 100644 +--- a/drivers/char/n_tty.c ++++ b/drivers/char/n_tty.c +@@ -576,33 +576,23 @@ static void process_echoes(struct tty_struct *tty) + break; + + default: +- if (iscntrl(op)) { +- if (L_ECHOCTL(tty)) { +- /* +- * Ensure there is enough space +- * for the whole ctrl pair. +- */ +- if (space < 2) { +- no_space_left = 1; +- break; +- } +- tty_put_char(tty, '^'); +- tty_put_char(tty, op ^ 0100); +- tty->column += 2; +- space -= 2; +- } else { +- if (!space) { +- no_space_left = 1; +- break; +- } +- tty_put_char(tty, op); +- space--; +- } +- } + /* +- * If above falls through, this was an +- * undefined op. ++ * If the op is not a special byte code, ++ * it is a ctrl char tagged to be echoed ++ * as "^X" (where X is the letter ++ * representing the control char). ++ * Note that we must ensure there is ++ * enough space for the whole ctrl pair. ++ * + */ ++ if (space < 2) { ++ no_space_left = 1; ++ break; ++ } ++ tty_put_char(tty, '^'); ++ tty_put_char(tty, op ^ 0100); ++ tty->column += 2; ++ space -= 2; + cp += 2; + nr -= 2; + } +@@ -809,8 +799,8 @@ static void echo_char_raw(unsigned char c, struct tty_struct *tty) + * Echo user input back onto the screen. This must be called only when + * L_ECHO(tty) is true. Called from the driver receive_buf path. + * +- * This variant tags control characters to be possibly echoed as +- * as "^X" (where X is the letter representing the control char). ++ * This variant tags control characters to be echoed as "^X" ++ * (where X is the letter representing the control char). + * + * Locking: echo_lock to protect the echo buffer + */ +@@ -823,7 +813,7 @@ static void echo_char(unsigned char c, struct tty_struct *tty) + add_echo_byte(ECHO_OP_START, tty); + add_echo_byte(ECHO_OP_START, tty); + } else { +- if (iscntrl(c) && c != '\t') ++ if (L_ECHOCTL(tty) && iscntrl(c) && c != '\t') + add_echo_byte(ECHO_OP_START, tty); + add_echo_byte(c, tty); + } -- cgit v1.2.3