diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-03-13 21:32:43 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-03-13 21:32:43 +0000 |
commit | 6c1ac428f59679642eb71703006dfe35995931d8 (patch) | |
tree | 5744b73f1858a19386cc636922e068381bafdeb8 /sys/dev/pci/pciide.c | |
parent | d1791e07d87a07e63b341f75626b0f2baa0e0815 (diff) |
Don't call wdcintr() for channels that aren't properly initialized or don't
have any drives on them. Fixes a panic seen on sparc64 machines with that
pesky Acer Labs chipset.
ok deraadt@, krw@, henning@
Diffstat (limited to 'sys/dev/pci/pciide.c')
-rw-r--r-- | sys/dev/pci/pciide.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c index 475345bba18..545358db0d5 100644 --- a/sys/dev/pci/pciide.c +++ b/sys/dev/pci/pciide.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pciide.c,v 1.337 2012/01/15 15:16:23 jsg Exp $ */ +/* $OpenBSD: pciide.c,v 1.338 2012/03/13 21:32:42 kettenis Exp $ */ /* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */ /* @@ -1838,6 +1838,9 @@ pciide_pci_intr(void *arg) if (cp->compat) continue; + if (cp->hw_ok == 0) + continue; + if (pciide_intr_flag(cp) == 0) continue; |