pty: Fix overlimit memory use
authorPeter Hurley <peter@hurleysoftware.com>
Fri, 16 Jan 2015 20:22:14 +0000 (15:22 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Feb 2015 18:11:25 +0000 (10:11 -0800)
The pty_space() computation is broken; the space already consumed
in the tty buffer is not accounted for.

Use tty_buffer_set_limit(), which enforces the limit automatically.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/pty.c

index 6e1f1505f04e4b0ae948dfad4be3319df1debdb7..f882ac81b93a2d54a602bf8c21d84a60f182ca47 100644 (file)
@@ -87,19 +87,6 @@ static void pty_unthrottle(struct tty_struct *tty)
        set_bit(TTY_THROTTLED, &tty->flags);
 }
 
-/**
- *     pty_space       -       report space left for writing
- *     @to: tty we are writing into
- *
- *     Limit the buffer space used by ptys to 8k.
- */
-
-static int pty_space(struct tty_struct *to)
-{
-       int n = tty_buffer_space_avail(to->port);
-       return min(n, 8192);
-}
-
 /**
  *     pty_write               -       write to a pty
  *     @tty: the tty we write from
@@ -141,7 +128,7 @@ static int pty_write_room(struct tty_struct *tty)
 {
        if (tty->stopped)
                return 0;
-       return pty_space(tty->link);
+       return tty_buffer_space_avail(tty->link->port);
 }
 
 /**
@@ -432,6 +419,8 @@ static int pty_common_install(struct tty_driver *driver, struct tty_struct *tty,
        o_tty->link = tty;
        tty_port_init(ports[0]);
        tty_port_init(ports[1]);
+       tty_buffer_set_limit(ports[0], 8192);
+       tty_buffer_set_limit(ports[1], 8192);
        o_tty->port = ports[0];
        tty->port = ports[1];
        o_tty->port->itty = o_tty;