diff options
Diffstat (limited to 'sys/dev/sio/sio.c')
-rw-r--r-- | sys/dev/sio/sio.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c index 6415fb5..64a49bb 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/sio.c @@ -10,10 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -1792,9 +1788,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; |