freebsd-nq/sys/dev
Adrian Chadd 807675317e Attempt to address some potential vap->iv_bss race conditions.
There are unfortunately a number of situations where vap->iv_bss is changed
or freed by some code in net80211.  Because multiple threads can concurrently
be doing work (and the vap->iv_bss access isn't at all done behind any kind
of lock), it's quite possible that:

* a change will occur in one thread - eg, by a call through
  ieee80211_sta_join1();
* a state change occurs in another thread - eg an RX is scheduled
  in the ath tasklet and it calls ieee80211_input_mimo_all(), which
  does dereference vap->iv_bss;
* these two executing concurrently, causing things to explode.

Another instance is ath_beacon_alloc() which takes an ieee80211_node *.
It's called with the vap->iv_bss node from ath_newstate(). If the node has
changed in the meantime (say it's been freed elsewhere) the reference
that it grabbed _before_ refcounting it may be stale.

I would _prefer_ that these sorts of things were serialised somewhere but
that may be a bit much to ask.  Instead, the best we can (currently) hope
is that the underlying bss node is still (somewhat) valid.

There is a related PR (kern/164382) described by the first case above.
That should be fixed by properly serialising the RX path and reset path
so an RX can't occur at the same time as the vap free/shutdown path.

This is inspired by some related fixes in r212127.

PR: kern/165060
2012-02-13 00:28:41 +00:00
..
aac - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpi_support - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpica De-obfuscate acpi_acquire_global_lock(). It seems the function was directly 2012-02-10 23:30:29 +00:00
adb Add support for special keys (volume/brightness/eject) on Apple laptops with 2011-10-16 21:01:42 +00:00
adlink
advansys
ae To send a frame, controller requires a prepended TX header and 2011-11-11 19:15:32 +00:00
age Close a race where SIOCGIFMEDIA ioctl get inconsistent link status. 2011-10-17 19:49:00 +00:00
agp
aha
ahb
ahci Convert files to UTF-8 2012-01-15 13:23:18 +00:00
aic
aic7xxx Add "%option noinput" to aicasm_scan.l and aicasm_macro_scan.l, so no 2011-12-16 00:04:28 +00:00
alc Close a race where SIOCGIFMEDIA ioctl get inconsistent link status. 2011-10-17 19:49:00 +00:00
ale Close a race where SIOCGIFMEDIA ioctl get inconsistent link status. 2011-10-17 19:49:00 +00:00
amdsbwd amdsbwd: update to support SB8xx southbridges 2011-06-07 06:18:02 +00:00
amdtemp
amr - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
an ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
arcmsr - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
asmc
asr Merge from r225950: 2011-10-13 20:06:19 +00:00
ata Using ATA_CAM along with ATAPI DMA causes data corruption with ALI_NEW 2012-01-27 21:52:59 +00:00
ath Attempt to address some potential vap->iv_bss race conditions. 2012-02-13 00:28:41 +00:00
atkbdc Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
auxio
bce Rework link state tracking and remove superfluous link UP/DOWN 2011-12-13 18:11:25 +00:00
bfe ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
bge Call bge_add_sysctls() early and especially before bge_can_use_msi() so 2012-02-07 20:24:52 +00:00
bktr Remove a few bits of FreeBSD 2.x compatibility code. 2011-11-14 18:21:27 +00:00
bm ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
buslogic
bwi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
bwn Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
bxe Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
cardbus Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
cas - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ce Fix clang warnings in sys/dev/ce/if_ce.c and sys/dev/cp/if_cp.c, 2011-12-29 17:46:24 +00:00
cesa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
cfe kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
cfi Merge r221614,221696,221737,221840 from largeSMP project branch: 2011-05-22 20:55:54 +00:00
ciss Update PCI IDs for ciss controllers that are supported by this driver. 2012-01-26 17:04:17 +00:00
cm Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
cmx
coretemp #PROCHOT assertion is sticky after reading the MSR (accordingly with 2011-09-19 10:58:30 +00:00
cp Fix clang warnings in sys/dev/ce/if_ce.c and sys/dev/cp/if_cp.c, 2011-12-29 17:46:24 +00:00
cpuctl Add VIA microde update support to cpuctl(4) and cpucontrol(8). 2011-12-12 12:30:44 +00:00
cpufreq
cs Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
ct
ctau
cx
cxgb Add IPv6 TSO (including TSO+VLAN) support to cxgb(4). 2012-02-09 23:19:09 +00:00
cxgbe Program the MAC exact match table in batches of 7 addresses at 2012-02-08 00:36:36 +00:00
cy
dc Use DEVMETHOD_END. 2011-11-23 20:27:26 +00:00
dcons kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
de Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
digi
dpms
dpt
drm In sys/dev/drm/radeon_state.c, use the correct printf length modifiers 2011-12-30 02:07:50 +00:00
e1000 GS105v3 exhibit the same behavior 2012-01-29 14:52:42 +00:00
ed Fix off by one error in mbuf access. Previously it caused panic. 2011-12-05 18:10:43 +00:00
eisa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
en Remove duplicate header includes 2011-06-28 08:36:48 +00:00
ep ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
esp s/timout/timeout 2011-12-15 06:29:13 +00:00
et style. No functional changes. 2012-01-10 20:52:02 +00:00
ex Convert files to UTF-8 2012-01-15 13:23:18 +00:00
exca
fatm
fb Convert files to UTF-8 2012-01-15 13:23:43 +00:00
fdc Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
fdt DEBUG is a kernel option. Don't define it here, as it breaks LINT. 2011-12-30 04:00:31 +00:00
fe Improve media status reporting, when the driver knows... 2012-01-30 22:47:02 +00:00
firewire Update sbp_targ such that it can actually handle multiple CTIO's during operation 2012-01-25 23:33:50 +00:00
flash Add a couple more SPI flash device IDs found in commercial 2012-01-04 04:17:03 +00:00
fxp Minor indenting divot... 2012-01-25 04:48:27 +00:00
gem - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
glxiic Fix breakage on pc98 by redefining DEBUG(). 2011-05-15 19:04:08 +00:00
glxsb
gpio Fix broken locking that I introduced in the previous commit. 2011-12-20 03:25:11 +00:00
hatm
hifn - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
hme - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
hpt27xx Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
hptiop - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
hptmv Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
hptrr - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than 2011-11-23 21:43:51 +00:00
hwpmc pmc_*_initialize may return NULL if the CPU is not supported, so check 2012-01-28 01:38:48 +00:00
ic
ichsmb - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ichwd Remove use of explicit bus space tags and handles and use methods that 2012-01-05 16:27:32 +00:00
ida - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ie Isolate v_caddr_t in the ie driver. 2012-01-31 13:00:40 +00:00
ieee488 Convert files to UTF-8 2012-01-15 13:23:43 +00:00
if_ndis ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
iicbus IIC bitbang changes - prepare to make the bit delay configurable; debug print changes. 2011-12-20 02:49:01 +00:00
iir Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
io
ipmi Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
ips
ipw Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
isci Remove explicit CC assignment in isci(4) Makefile to allow for building 2012-02-09 17:50:24 +00:00
iscsi/initiator Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
isp Fix target mode compilation issues that arose after a change 2011-12-27 14:59:24 +00:00
ispfw
iwi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
iwn On state changes from RUN to anything else the AGGR sessions are 2012-01-27 17:39:02 +00:00
ixgb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
ixgbe Wrap the bool typedef 2012-01-30 23:03:21 +00:00
jme - Remove attempts to implement setting of BMCR_LOOP/MIIF_NOLOOP 2011-05-03 19:51:29 +00:00
joy
kbd Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
kbdmux Restore binary compatibility for GIO_KEYMAP and PIO_KEYMAP. 2011-07-17 08:19:19 +00:00
ksyms Get rid of D_PSEUDO. 2011-10-18 08:09:44 +00:00
le Make sparc64 compatible with NEW_PCIB and enable it: 2011-10-02 23:22:38 +00:00
led
lge ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
lindev
lmc In r191367 the need for if_free_type() was removed and a new member 2011-11-11 22:57:52 +00:00
malo Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
mc146818
mca - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mcd
md Document a large number of currently undocumented sysctls. While here 2011-12-13 00:38:50 +00:00
mem
mfi - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mge
mii - In mii_attach(9) just set the driver for a newly added miibus(4) instance 2011-12-05 21:38:45 +00:00
mk48txx Add support for MK48T37. 2011-05-15 13:17:08 +00:00
mlx - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
mly Add descriptor sense support to CAM, and honor sense residuals properly in 2011-10-03 20:32:55 +00:00
mmc Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
mn
mps Return BUS_PROBE_DEFAULT instead of BUS_PROBE_VENDOR from the mps driver 2012-02-11 00:28:30 +00:00
mpt Flesh out support for SAS1078 and SAS1078DE (which are said to actually 2012-02-11 12:03:44 +00:00
mse
msk ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
mvs Adjust mvs(4) to handle interrupt cause reg depending on the actual number of 2012-02-01 13:39:52 +00:00
mwl Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
mxge Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
my ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
ncv
netmap - change the buffer size from a constant to a 2012-02-08 11:43:29 +00:00
nfe ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
nge - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
nmdm Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
nsp
null Fix for PR 138526. 2012-01-11 15:00:16 +00:00
nve ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
nvram
nvram2env
nxge Convert files to UTF-8 2012-01-15 13:23:43 +00:00
oce Start to try to hide LRO (and some TSO) bits behind #ifdefs as especially 2012-02-11 08:33:52 +00:00
ofw Implement OF_printf() using kvprintf() directly, avoiding to use a 2012-01-27 22:29:29 +00:00
patm
pbio
pccard Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
pccbb Some laptops have weak power controllers that cannot tolerate multiple 2012-01-27 21:49:02 +00:00
pcf
pci Fix a spelling mistake in the surprise link down error constant. 2012-01-31 15:48:40 +00:00
pcn - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
pdq
powermac_nvram
ppbus Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
ppc Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
pst Convert files to UTF-8 2012-01-15 13:23:18 +00:00
pty Fix whitespace inconsistencies in the TTY layer and its drivers owned by me. 2011-06-26 18:26:20 +00:00
puc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
qlxgb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
quicc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
ral Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
random Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
rc
re Fix a logic error which resulted in putting PHY into sleep when WOL 2012-01-19 20:13:16 +00:00
rndtest Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
rp
rt ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
safe - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sbni
scc - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
scd
sdhci Add support for RICOH R5CE823 card reader, that can be found in 2012-02-09 10:20:41 +00:00
sec - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sf - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
sfxge Update recently added drivers to use the if_*addr_r*lock() wrapper 2012-01-05 18:32:37 +00:00
sge - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
si
siba Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
siis Rename device_delete_all_children() into device_delete_children(). 2011-11-22 21:56:55 +00:00
sio kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
sis ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
sk ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
smbus - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
smc - Import the common MII bitbang'ing code from NetBSD and convert drivers to 2011-11-01 16:13:59 +00:00
sn ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
snc ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
snp Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
sound Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
speaker Do not define bool/true/false if the symbols already exist. 2011-12-12 18:43:24 +00:00
spibus Replace inline static' by static inline'. 2011-12-13 14:06:01 +00:00
ste - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
stg
stge ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
streams Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
sym Merge from r225950: 2011-10-07 08:59:54 +00:00
syscons Convert files to UTF-8 2012-01-15 13:23:18 +00:00
tdfx Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
ti Eliminate vestiges of page coloring. 2011-12-15 05:07:16 +00:00
tl ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
tpm
trm
tsec ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
twa s/timout/timeout 2011-12-15 06:29:13 +00:00
twe - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
tws Match surrounding style. 2012-01-16 06:00:44 +00:00
tx - Remove attempts to implement setting of BMCR_LOOP/MIIF_NOLOOP 2011-05-03 19:51:29 +00:00
txp
uart Add support for Sony Ericsson GC89 EDGE/Wirelles LAN PC Card 2012-01-19 02:47:11 +00:00
ubsec - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
usb Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
utopia
vge Remove unused variable mii 2012-02-11 08:12:52 +00:00
viawd Correctly spell my email address. 2011-12-22 15:13:32 +00:00
virtio Catch up with Bryan Venteicher's virtio Hg repo: 2011-12-06 06:28:32 +00:00
vkbd Get rid of D_PSEUDO. 2011-10-18 08:09:44 +00:00
vr Announce flow control capability to PHY drivers and enable flow 2011-11-28 19:03:59 +00:00
vte Remove unused variable mii. 2011-11-23 05:34:01 +00:00
vx ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
vxge Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:54 +00:00
watchdog - Add the possibility to reuse the already last used timeout when patting 2011-04-27 16:43:03 +00:00
wb ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again 2012-01-07 09:41:57 +00:00
wds
wi Include opt_wlan.h before net80211 includes; so IEEE80211_* configuration 2012-01-26 05:11:37 +00:00
wl
wpi Fix some net80211 enum nits: 2011-12-17 10:23:17 +00:00
wtap Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
xe Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
xen Fix the netback driver build for i386. 2012-02-02 17:54:35 +00:00
xl Use DEVMETHOD_END. 2011-11-23 20:27:26 +00:00