diff options
Diffstat (limited to 'sys/dev/sio/sio.c')
-rw-r--r-- | sys/dev/sio/sio.c | 13 |
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; |