summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1995-09-11 06:28:38 +0000
committerpeter <peter@FreeBSD.org>1995-09-11 06:28:38 +0000
commit0b188ff7251225bef2d5a6f7a9158c003cfefebe (patch)
treeb97577f8fef6cd444d94672798226c57a0c2d79e
parent47fb065f6d468c6e4ec3400e07201999fa4fd89b (diff)
downloadFreeBSD-src-0b188ff7251225bef2d5a6f7a9158c003cfefebe.zip
FreeBSD-src-0b188ff7251225bef2d5a6f7a9158c003cfefebe.tar.gz
Restore two checks for TS_ISOPEN.. I managed to panic my machine
without them.. I thought TS_CONNECTED implied TS_ISOPEN, but apparently that's not the case.
-rw-r--r--sys/dev/si/si.c8
-rw-r--r--sys/i386/isa/si.c8
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/si/si.c b/sys/dev/si/si.c
index e0912f8..6843af0 100644
--- a/sys/dev/si/si.c
+++ b/sys/dev/si/si.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.c,v 1.4 1995/08/13 15:44:37 peter Exp $
+ * $Id: si.c,v 1.5 1995/08/22 00:48:17 peter Exp $
*/
#ifndef lint
@@ -1772,7 +1772,8 @@ siintr(int bdnum)
* Do break processing
*/
if (ccbp->hi_state & ST_BREAK) {
- if (tp->t_state & TS_CONNECTED) {
+ if (tp->t_state & TS_CONNECTED &&
+ tp->t_state & TS_ISOPEN) {
(*linesw[tp->t_line].l_rint)(TTY_BI, tp);
}
ccbp->hi_state &= ~ST_BREAK; /* A Bit iffy this */
@@ -1784,7 +1785,8 @@ siintr(int bdnum)
* dump any characters.
*/
- if ((tp->t_state & TS_CONNECTED) == 0) {
+ if ((tp->t_state & TS_CONNECTED) == 0 ||
+ (tp->t_state & TS_ISOPEN) == 0) {
ccbp->hi_rxopos = ccbp->hi_rxipos;
} else {
while ((c = ccbp->hi_rxipos - ccbp->hi_rxopos) != 0) {
diff --git a/sys/i386/isa/si.c b/sys/i386/isa/si.c
index e0912f8..6843af0 100644
--- a/sys/i386/isa/si.c
+++ b/sys/i386/isa/si.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.c,v 1.4 1995/08/13 15:44:37 peter Exp $
+ * $Id: si.c,v 1.5 1995/08/22 00:48:17 peter Exp $
*/
#ifndef lint
@@ -1772,7 +1772,8 @@ siintr(int bdnum)
* Do break processing
*/
if (ccbp->hi_state & ST_BREAK) {
- if (tp->t_state & TS_CONNECTED) {
+ if (tp->t_state & TS_CONNECTED &&
+ tp->t_state & TS_ISOPEN) {
(*linesw[tp->t_line].l_rint)(TTY_BI, tp);
}
ccbp->hi_state &= ~ST_BREAK; /* A Bit iffy this */
@@ -1784,7 +1785,8 @@ siintr(int bdnum)
* dump any characters.
*/
- if ((tp->t_state & TS_CONNECTED) == 0) {
+ if ((tp->t_state & TS_CONNECTED) == 0 ||
+ (tp->t_state & TS_ISOPEN) == 0) {
ccbp->hi_rxopos = ccbp->hi_rxipos;
} else {
while ((c = ccbp->hi_rxipos - ccbp->hi_rxopos) != 0) {
OpenPOWER on IntegriCloud