aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sio
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2004-04-07 05:00:01 +0000
committerWarner Losh <imp@FreeBSD.org>2004-04-07 05:00:01 +0000
commit2fcbca0d8575cf5ca6924283517b3adfc7d6d113 (patch)
treeb2beacbd07741f5047235203a9905f6f52963bc2 /sys/dev/sio
parent82c6e8799148846434736b6a230eb525574993ab (diff)
Notes
Diffstat (limited to 'sys/dev/sio')
-rw-r--r--sys/dev/sio/sio.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c
index 6415fb5ac5724..9bf4dfa748431 100644
--- a/sys/dev/sio/sio.c
+++ b/sys/dev/sio/sio.c
@@ -1792,9 +1792,20 @@ siointr1(com)
}
}
line_status = inb(com->line_status_port);
-
+ if (line_status == 0xff) {
+ printf("sio%d: spouting nonsense -- disabled.\n",
+ com->unit);
+ com->gone = 1;
+ break;
+ }
/* input event? (check first to help avoid overruns) */
while (line_status & LSR_RCV_MASK) {
+ if (line_status == 0xff) {
+ printf("sio%d: linestats bogus -- disabled.\n",
+ com->unit);
+ com->gone = 1;
+ return;
+ }
/* break/unnattached error bits or real input? */
if (!(line_status & LSR_RXRDY))
recv_data = 0;