diff options
author | Julian Elischer <julian@FreeBSD.org> | 1998-12-11 06:02:06 +0000 |
---|---|---|
committer | Julian Elischer <julian@FreeBSD.org> | 1998-12-11 06:02:06 +0000 |
commit | 8cbe8a3ebf28ce66538485e6595539ea30098356 (patch) | |
tree | 96e8fc5cb77ff17ee4798ad4eaff9716489a26eb | |
parent | 57c2edb48fd1d523c13d1b205d9f54596188e1c6 (diff) | |
download | src-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.c | 3 |
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; |