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.c17
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;
OpenPOWER on IntegriCloud