aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>1998-12-11 06:02:06 +0000
committerJulian Elischer <julian@FreeBSD.org>1998-12-11 06:02:06 +0000
commit8cbe8a3ebf28ce66538485e6595539ea30098356 (patch)
tree96e8fc5cb77ff17ee4798ad4eaff9716489a26eb
parent57c2edb48fd1d523c13d1b205d9f54596188e1c6 (diff)
downloadsrc-8cbe8a3ebf28ce66538485e6595539ea30098356.tar.gz
src-8cbe8a3ebf28ce66538485e6595539ea30098356.zip
If we failed to probe/attach somehow, we never have a sc->sc_hcca
but the present PCI probe code still thinks we are there as the pci attach can't return an error code. This means we are in the shared interrupt list, but have not been set up. If we are sharing ints with another device, ohci_intr will be called and will coredump on a NULL reference. So just return if it is called when not set up. This fixes the symptom and not the cause. The right answer is to let the PCI system know that the attach failed, or to fail earlier (in the PCI probe). The attach() is a void fn() so it can't return failure..
Notes
Notes: svn path=/head/; revision=41673
-rw-r--r--sys/dev/usb/ohci.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c
index 2232fad61a22..86bc3ac20f9f 100644
--- a/sys/dev/usb/ohci.c
+++ b/sys/dev/usb/ohci.c
@@ -542,6 +542,9 @@ ohci_intr(p)
u_int32_t intrs, eintrs;
ohci_physaddr_t done;
+ if ((sc == NULL) || (sc->sc_hcca == NULL))
+ return (0);
+
done = sc->sc_hcca->hcca_done_head;
if (done != 0) {
intrs = OHCI_WDH;