linux/net/mac80211
Denis Kenzior a948f71384 nl80211/mac80211: allow non-linear skb in rx_control_port
The current implementation of cfg80211_rx_control_port assumed that the
caller could provide a contiguous region of memory for the control port
frame to be sent up to userspace.  Unfortunately, many drivers produce
non-linear skbs, especially for data frames.  This resulted in userspace
getting notified of control port frames with correct metadata (from
address, port, etc) yet garbage / nonsense contents, resulting in bad
handshakes, disconnections, etc.

mac80211 linearizes skbs containing management frames.  But it didn't
seem worthwhile to do this for control port frames.  Thus the signature
of cfg80211_rx_control_port was changed to take the skb directly.
nl80211 then takes care of obtaining control port frame data directly
from the (linear | non-linear) skb.

The caller is still responsible for freeing the skb,
cfg80211_rx_control_port does not take ownership of it.

Fixes: 6a671a50f8 ("nl80211: Add CMD_CONTROL_PORT_FRAME API")
Signed-off-by: Denis Kenzior <denkenz@gmail.com>
[fix some kernel-doc formatting, add fixes tag]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2018-07-06 14:34:42 +02:00
..
Kconfig
Makefile
aead_api.c
aead_api.h
aes_ccm.h
aes_cmac.c
aes_cmac.h
aes_gcm.h
aes_gmac.c
aes_gmac.h
agg-rx.c mac80211: agg-rx: Accept ADDBA request update if timeout did not change 2018-02-27 11:06:04 +01:00
agg-tx.c mac80211: use timeout from the AddBA response instead of the request 2018-05-07 20:35:15 +02:00
cfg.c mac80211: allocate and fill tidstats only when needed 2018-05-18 11:40:44 +02:00
chan.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
debug.h
debugfs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-23 11:31:58 -04:00
debugfs.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c
debugfs_netdev.h
debugfs_sta.c mac80211: Add txq flags to debugfs 2018-01-31 12:57:24 +01:00
debugfs_sta.h
driver-ops.c
driver-ops.h mac80211: Support adding duration for prepare_tx() callback 2018-05-23 11:06:10 +02:00
ethtool.c mac80211: allocate and fill tidstats only when needed 2018-05-18 11:40:44 +02:00
fils_aead.c
fils_aead.h
ht.c mac80211: fix TX aggregation stop race 2018-05-18 11:14:36 +02:00
ibss.c mac80211: Send control port frames over nl80211 2018-03-29 14:08:30 +02:00
ieee80211_i.h mac80211: Support the new cfg80211 TXQ stats API 2018-05-08 13:25:22 +02:00
iface.c mac80211: Send control port frames over nl80211 2018-03-29 14:08:30 +02:00
key.c mac80211: allow AP_VLAN operation on crypto controlled devices 2018-03-29 11:35:22 +02:00
key.h
led.c mac80211: Convert timers to use timer_setup() 2017-11-20 16:55:11 +01:00
led.h
main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-06-16 07:39:34 +09:00
mesh.c mac80211: notify driver for change in multicast rates 2018-03-23 13:23:17 +01:00
mesh.h mac80211: Convert timers to use timer_setup() 2017-11-20 16:55:11 +01:00
mesh_hwmp.c mac80211: mark expected switch fall-throughs 2017-12-11 12:16:04 +01:00
mesh_pathtbl.c rhashtable: Change rhashtable_walk_start to return void 2017-12-11 09:58:38 -05:00
mesh_plink.c mac80211: mesh: fix premature update of rc stats 2018-05-18 10:02:28 +02:00
mesh_ps.c
mesh_sync.c
michael.c mac80211: add get TID helper 2018-02-22 21:13:03 +01:00
michael.h
mlme.c mac80211: Support adding duration for prepare_tx() callback 2018-05-23 11:06:10 +02:00
ocb.c mac80211: Convert timers to use timer_setup() 2017-11-20 16:55:11 +01:00
offchannel.c mac80211: mark expected switch fall-throughs 2017-12-11 12:16:04 +01:00
pm.c
rate.c
rate.h
rc80211_minstrel.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
rc80211_minstrel.h
rc80211_minstrel_debugfs.c net: Use octal not symbolic permissions 2018-03-26 12:07:48 -04:00
rc80211_minstrel_ht.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
rc80211_minstrel_ht.h
rc80211_minstrel_ht_debugfs.c net: Use octal not symbolic permissions 2018-03-26 12:07:48 -04:00
rx.c nl80211/mac80211: allow non-linear skb in rx_control_port 2018-07-06 14:34:42 +02:00
scan.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
spectmgmt.c mac80211: Do not disconnect on invalid operating class 2018-02-19 14:53:14 +01:00
sta_info.c mac80211: allocate and fill tidstats only when needed 2018-05-18 11:40:44 +02:00
sta_info.h mac80211: allocate and fill tidstats only when needed 2018-05-18 11:40:44 +02:00
status.c mac80211: average ack rssi support for data frames 2018-05-07 21:41:16 +02:00
tdls.c mac80211: enable TDLS peer buffer STA feature 2017-12-11 12:16:05 +01:00
tkip.c
tkip.h
trace.c
trace.h mac80211: Support adding duration for prepare_tx() callback 2018-05-23 11:06:10 +02:00
trace_msg.h
tx.c mac80211: disable BHs/preemption in ieee80211_tx_control_port() 2018-06-29 09:39:08 +02:00
util.c mac80211: add stations tied to AP_VLANs during hw reconfig 2018-07-03 11:41:56 +02:00
vht.c mac80211: Use proper chan_width enum in sta opmode event 2018-03-29 10:19:59 +02:00
wep.c
wep.h
wme.c mac80211: mark expected switch fall-throughs 2017-12-11 12:16:04 +01:00
wme.h
wpa.c mac80211: add get TID helper 2018-02-22 21:13:03 +01:00
wpa.h