freebsd-skq/sys/net80211
avos 97b3b273d7 net80211: resolve ioctl <-> detach race for ieee80211com structure
Since r287197 ieee80211com is a part of drivers softc; as a result,
after detach all pointers to it (iv_ic, ni_ic) are invalid. Most
possible users (tasks, interrupt handlers) are blocked / removed
when device is stopped; however, ioctl handlers were not tracked
and may crash if ieee80211com structure is accessed.

Since ieee80211com pointer access from ieee80211vap structure is not
protected by lock (constant after interface creation) and used in
many other places just use reference counting for ioctl handlers;
on detach set 'detached' flag and wait until reference counter goes to 0.

For HEAD ieee80211vap size was changed (__FreeBSD_version bumped);
however, in stable branches I'm going to split / reuse the last
iv_spare field for KBI stability.

Tested with:
 - rsu(4), SIOCSIFCAP (-rxcsum) ioctl;
 - rtwn_pci(4), SIOCG80211 / IEEE80211_IOC_HTPROTMODE ioctl.

MFC after:	1 week
2019-01-20 13:39:18 +00:00
..
_ieee80211.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_acl.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_action.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_action.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_adhoc.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_adhoc.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ageq.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ageq.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_alq.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_alq.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_amrr.c net80211: fix possible panic for some drivers after r342211 2019-01-12 14:57:12 +00:00
ieee80211_amrr.h
ieee80211_crypto_ccmp.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_crypto_none.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_crypto_tkip.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_crypto_wep.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_crypto.c net80211: drop m_pullup call from ieee80211_crypto_decap. 2019-01-19 16:04:26 +00:00
ieee80211_crypto.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ddb.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_dfs.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_dfs.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_freebsd.c net80211: resolve ioctl <-> detach race for ieee80211com structure 2019-01-20 13:39:18 +00:00
ieee80211_freebsd.h net80211: resolve ioctl <-> detach race for ieee80211com structure 2019-01-20 13:39:18 +00:00
ieee80211_hostap.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_hostap.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ht.c kernel: Fix several typos and minor errors 2017-12-27 03:23:21 +00:00
ieee80211_ht.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_hwmp.c Fix misspellings of transmitter/transmitted 2018-08-10 20:37:32 +00:00
ieee80211_input.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_input.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ioctl.c net80211: resolve ioctl <-> detach race for ieee80211com structure 2019-01-20 13:39:18 +00:00
ieee80211_ioctl.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_mesh.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_mesh.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_monitor.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_monitor.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_node.c net80211: fix out-of-bounds read in ieee80211_amrr(9). 2018-12-19 03:08:10 +00:00
ieee80211_node.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_output.c net80211: provide rate validation for injected frames. 2019-01-13 06:01:36 +00:00
ieee80211_phy.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_phy.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_power.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_power.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_proto.c [net80211] add a method for checking if a VAP WME AC has a NOACK policy or not. 2017-12-09 23:16:02 +00:00
ieee80211_proto.h net80211: wrap protection frame allocation into ieee80211_alloc_prot() 2018-03-09 11:33:56 +00:00
ieee80211_radiotap.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_radiotap.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ratectl_none.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ratectl.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_ratectl.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_regdomain.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_regdomain.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_rssadapt.c net80211: fix possible panic for some drivers after r342211 2019-01-12 14:57:12 +00:00
ieee80211_rssadapt.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_scan_sta.c kernel: Fix several typos and minor errors 2017-12-27 03:23:21 +00:00
ieee80211_scan_sw.c [net80211] don't abort a background scan upon reception of a single packet. 2016-10-28 02:09:45 +00:00
ieee80211_scan_sw.h
ieee80211_scan.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_scan.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_sta.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_sta.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_superg.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_superg.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_tdma.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_tdma.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_var.h net80211: resolve ioctl <-> detach race for ieee80211com structure 2019-01-20 13:39:18 +00:00
ieee80211_vht.c Fix build without IEEE80211_DEBUG. 2017-01-10 19:28:40 +00:00
ieee80211_vht.h [net80211] create a helper function to calculate the station facing VHT capabilities. 2017-01-10 05:30:15 +00:00
ieee80211_wds.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_wds.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211_wps.h [ifconfig] Print more WPS attributes in verbose "list scan" output 2019-01-20 00:45:44 +00:00
ieee80211_xauth.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ieee80211.c net80211: resolve ioctl <-> detach race for ieee80211com structure 2019-01-20 13:39:18 +00:00
ieee80211.h [ifconfig] Print more WPS attributes in verbose "list scan" output 2019-01-20 00:45:44 +00:00