summaryrefslogtreecommitdiffstats
path: root/sys/dev/sio/sio.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/sio/sio.c')
-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 6415fb5..9bf4dfa 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;
OpenPOWER on IntegriCloud