summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorariff <ariff@FreeBSD.org>2005-11-14 18:18:52 +0000
committerariff <ariff@FreeBSD.org>2005-11-14 18:18:52 +0000
commitab648d3fa127d3df68ed3b11189fbb4a6b40727e (patch)
tree949e26b271544a6335b162083be2eaeabd83941a
parent4d50403e742296287fbcb97ba2f16c7bea90d01c (diff)
downloadFreeBSD-src-ab648d3fa127d3df68ed3b11189fbb4a6b40727e.zip
FreeBSD-src-ab648d3fa127d3df68ed3b11189fbb4a6b40727e.tar.gz
Fix a long standing unhandled interrupt bug which can cause
erratic system slowdown (beaten to a pulp) and possible panic. This issue has bugged me for as long as I could remember, until I realized that it is possible for register base offset to hold zero value which is definitely a "FALSE". Approved by: netchild (mentor)
-rw-r--r--sys/dev/sound/pci/via8233.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/sound/pci/via8233.c b/sys/dev/sound/pci/via8233.c
index 19e3507..8dca294 100644
--- a/sys/dev/sound/pci/via8233.c
+++ b/sys/dev/sound/pci/via8233.c
@@ -712,7 +712,7 @@ via_intr(void *p)
/* Poll playback channels */
snd_mtxlock(via->lock);
for (i = 0; i < NDXSCHANS + NMSGDCHANS; i++) {
- if (via->pch[i].rbase == 0)
+ if (via->pch[i].channel == NULL)
continue;
stat = via->pch[i].rbase + VIA_RP_STATUS;
if (via_rd(via, stat, 1) & SGD_STATUS_INTR) {
@@ -725,7 +725,7 @@ via_intr(void *p)
/* Poll record channels */
for (i = 0; i < NWRCHANS; i++) {
- if (via->rch[i].rbase == 0)
+ if (via->rch[i].channel == NULL)
continue;
stat = via->rch[i].rbase + VIA_RP_STATUS;
if (via_rd(via, stat, 1) & SGD_STATUS_INTR) {
OpenPOWER on IntegriCloud