From owner-p4-projects@FreeBSD.ORG Wed Sep 24 17:34:33 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0C0951065689; Wed, 24 Sep 2008 17:34:33 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C36C0106567D for ; Wed, 24 Sep 2008 17:34:32 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B2CC18FC08 for ; Wed, 24 Sep 2008 17:34:32 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id m8OHYWTf009691 for ; Wed, 24 Sep 2008 17:34:32 GMT (envelope-from ed@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id m8OHYWTp009688 for perforce@freebsd.org; Wed, 24 Sep 2008 17:34:32 GMT (envelope-from ed@FreeBSD.org) Date: Wed, 24 Sep 2008 17:34:32 GMT Message-Id: <200809241734.m8OHYWTp009688@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ed@FreeBSD.org using -f From: Ed Schouten To: Perforce Change Reviews Cc: Subject: PERFORCE change 150391 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Sep 2008 17:34:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=150391 Change 150391 by ed@ed_dull on 2008/09/24 17:34:00 Clamp the TTY buffer sizes to 64K. It turns out we have many drivers in the tree that have no practical limit on the baud rate, which is dangerous. Affected files ... .. //depot/projects/mpsafetty/sys/kern/tty.c#49 edit Differences ... ==== //depot/projects/mpsafetty/sys/kern/tty.c#49 (text+ko) ==== @@ -92,21 +92,23 @@ * Set TTY buffer sizes. */ +#define TTYBUF_MAX 65536 + static void tty_watermarks(struct tty *tp) { - speed_t sp; + size_t bs; /* Provide an input buffer for 0.2 seconds of data. */ - sp = MAX(tp->t_termios.c_ispeed, 0); - ttyinq_setsize(&tp->t_inq, tp, sp / 5); + bs = MIN(tp->t_termios.c_ispeed / 5, TTYBUF_MAX); + ttyinq_setsize(&tp->t_inq, tp, bs); /* Set low watermark at 10% (when 90% is available). */ tp->t_inlow = (ttyinq_getsize(&tp->t_inq) * 9) / 10; /* Provide an ouput buffer for 0.2 seconds of data. */ - sp = MAX(tp->t_termios.c_ospeed, 0); - ttyoutq_setsize(&tp->t_outq, tp, sp / 5); + bs = MIN(tp->t_termios.c_ospeed / 5, TTYBUF_MAX); + ttyoutq_setsize(&tp->t_outq, tp, bs); /* Set low watermark at 10% (when 90% is available). */ tp->t_outlow = (ttyoutq_getsize(&tp->t_outq) * 9) / 10;