From owner-p4-projects@FreeBSD.ORG Wed Jul 30 10:48:30 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8D8EB1065674; Wed, 30 Jul 2008 10:48:30 +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 50C2F106566B for ; Wed, 30 Jul 2008 10:48:30 +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 484F28FC25 for ; Wed, 30 Jul 2008 10:48:30 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.2/8.14.2) with ESMTP id m6UAmUDn033787 for ; Wed, 30 Jul 2008 10:48:30 GMT (envelope-from ed@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m6UAmUqt033785 for perforce@freebsd.org; Wed, 30 Jul 2008 10:48:30 GMT (envelope-from ed@FreeBSD.org) Date: Wed, 30 Jul 2008 10:48:30 GMT Message-Id: <200807301048.m6UAmUqt033785@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 146248 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, 30 Jul 2008 10:48:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=146248 Change 146248 by ed@ed_flippo on 2008/07/30 10:47:59 Be sure to assert the high water mark flag before actually going to sleep. Drivers that process data synchronously may cause TTY's to block, even if there is enough room to write new data. Affected files ... .. //depot/projects/mpsafetty/sys/kern/tty_ttydisc.c#4 edit Differences ... ==== //depot/projects/mpsafetty/sys/kern/tty_ttydisc.c#4 (text+ko) ==== @@ -507,7 +507,15 @@ goto done; } + /* + * The driver may write back the data + * synchronously. Be sure to check the high + * water mark before going to sleep. + */ ttydevsw_outwakeup(tp); + if ((tp->t_flags & TF_HIWAT_OUT) == 0) + continue; + error = tty_wait(tp, &tp->t_outwait); if (error) goto done;