Ack: [PATCH] SAUCE: (no-up) Only let characters through when there are active readers.

Steve Conklin steve.conklin at canonical.com
Thu Oct 10 14:26:58 UTC 2013


On 10/10/2013 08:37 AM, Chris J Arges wrote:
> From: Maximiliano Curia <maxy at gnuservers.com.ar>
> 
> upstreamed
> 
> 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>
> ---
>  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 72d3ff8..98705aa 100644
> --- a/drivers/tty/n_tty.c
> +++ b/drivers/tty/n_tty.c
> @@ -101,9 +101,16 @@ static void n_tty_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 = tty->icanon && !tty->canon_data;
> +		if (waitqueue_active(&tty->read_wait)) {
> +			left = tty->icanon && !tty->canon_data;
> +		} else {
> +			left = 0;
> +		}
> +
>  	old_left = tty->receive_room;
>  	tty->receive_room = left;
>  
> 





More information about the kernel-team mailing list