summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_clist.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1995-11-02 08:37:22 +0000
committerpeter <peter@FreeBSD.org>1995-11-02 08:37:22 +0000
commit3d387b17dbfda691aa60584d85776a2783adbe77 (patch)
tree326053e1ee22df16c102d48780f17e17addc3b04 /sys/kern/subr_clist.c
parentc85bf90168e3d2e61908e54987b6493f20b4e818 (diff)
downloadFreeBSD-src-3d387b17dbfda691aa60584d85776a2783adbe77.zip
FreeBSD-src-3d387b17dbfda691aa60584d85776a2783adbe77.tar.gz
Make putc and b_to_q deal with clists with no reserved blocks in a more
civilised manner than panicing. This only happens as a result of another state botch somewhere else, eg: from a tty driver calling putc or b_to_q on a closed device. Apparently, it's also been implicated in a panic with a status (^T) event on ptys. This change should pretty well be in it's final form now.
Diffstat (limited to 'sys/kern/subr_clist.c')
-rw-r--r--sys/kern/subr_clist.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/sys/kern/subr_clist.c b/sys/kern/subr_clist.c
index 1855e17..133ced4 100644
--- a/sys/kern/subr_clist.c
+++ b/sys/kern/subr_clist.c
@@ -6,7 +6,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: tty_subr.c,v 1.15 1995/10/31 19:00:00 peter Exp $
+ * $Id: tty_subr.c,v 1.16 1995/11/01 15:59:55 peter Exp $
*/
/*
@@ -351,12 +351,8 @@ putc(chr, clistp)
if (clistp->c_cl == NULL) {
if (clistp->c_cbreserved < 1) {
splx(s);
- printf("putc to a clist with no reserved cblocks: data discarded.\n");
-#ifdef DIAGNOSTIC
- Debugger("putc to clist with no reserved cblocks");
-#endif
- /* black-hole the character */
- return (0);
+ printf("putc to a clist with no reserved cblocks\n");
+ return (-1); /* nothing done */
}
cblockp = cblock_alloc();
clistp->c_cbcount = 1;
@@ -434,12 +430,8 @@ b_to_q(src, amount, clistp)
if (clistp->c_cl == NULL) {
if (clistp->c_cbreserved < 1) {
splx(s);
- printf("b_to_q to a clist with no reserved cblocks: data discarded.\n");
-#ifdef DIAGNOSTIC
- Debugger("b_to_q to clist with no reserved cblocks");
-#endif
- /* black-hole the characters */
- return (0);
+ printf("b_to_q to a clist with no reserved cblocks.\n");
+ return (amount); /* nothing done */
}
cblockp = cblock_alloc();
clistp->c_cbcount = 1;
OpenPOWER on IntegriCloud