aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ath/if_ath_pci.c
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2003-08-13 21:29:35 +0000
committerSam Leffler <sam@FreeBSD.org>2003-08-13 21:29:35 +0000
commitb58b38031df4fb00c9df6d3521af8b596589691d (patch)
treeed26ae54275bdb5b2e09d4a732cee00c573e7cab /sys/dev/ath/if_ath_pci.c
parent900017e84b52e01027f9b5eb445d0997a88387a0 (diff)
downloadsrc-b58b38031df4fb00c9df6d3521af8b596589691d.tar.gz
src-b58b38031df4fb00c9df6d3521af8b596589691d.zip
Close a race where ath_intr is installed and may be called before
the HAL is setup: use sc_invalid to discard such entries into ath_intr. This can easily happen if the device is assigned a shared IRQ.
Notes
Notes: svn path=/head/; revision=118884
Diffstat (limited to 'sys/dev/ath/if_ath_pci.c')
-rw-r--r--sys/dev/ath/if_ath_pci.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath_pci.c b/sys/dev/ath/if_ath_pci.c
index 34459de0e56b..ddf602d633f5 100644
--- a/sys/dev/ath/if_ath_pci.c
+++ b/sys/dev/ath/if_ath_pci.c
@@ -152,6 +152,11 @@ ath_pci_attach(device_t dev)
}
sc->sc_st = rman_get_bustag(psc->sc_sr);
sc->sc_sh = rman_get_bushandle(psc->sc_sr);
+ /*
+ * Mark device invalid so any interrupts (shared or otherwise)
+ * that arrive before the HAL is setup are discarded.
+ */
+ sc->sc_invalid = 1;
/*
* Arrange interrupt line.