linux-stable/net/mac80211
Herbert Xu b4c3fbe636 mac80211: Use linked list instead of rhashtable walk for mesh tables
The mesh table code walks over hash tables for two purposes.  First of
all it's used as part of a netlink dump process, but it is also used
for looking up entries to delete using criteria other than the hash
key.

The second purpose is directly contrary to the design specification
of rhashtable walks.  It is only meant for use by netlink dumps.

This is because rhashtable is resizable and you cannot obtain a
stable walk over it during a resize process.

In fact mesh's use of rhashtable for dumping is bogus too.  Rather
than using rhashtable walk's iterator to keep track of the current
position, it always converts the current position to an integer
which defeats the purpose of the iterator.

Therefore this patch converts all uses of rhashtable walk into a
simple linked list.

This patch also adds a new spin lock to protect the hash table
insertion/removal as well as the walk list modifications.  In fact
the previous code was buggy as the removals can race with each
other, potentially resulting in a double-free.

Cc: stable@vger.kernel.org
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2019-02-15 13:10:10 +01:00
..
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
agg-tx.c mac80211: Fix Tx aggregation session tear down with ITXQs 2019-02-11 15:50:56 +01:00
cfg.c mac80211: don't initiate TDLS connection if station is not associated to AP 2019-01-25 10:13:22 +01:00
chan.c
debug.h
debugfs.c mac80211: add an option for station management TXQ 2018-09-05 10:10:11 +02:00
debugfs.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c {nl,mac}80211: add dot11MeshConnectedToMeshGate to meshconf 2018-11-09 11:39:44 +01:00
debugfs_netdev.h
debugfs_sta.c mac80211: debugfs: avoid variable shadowing 2018-11-09 11:14:51 +01:00
debugfs_sta.h
driver-ops.c
driver-ops.h mac80211: allow drivers to use peer measurement API 2018-11-09 11:20:34 +01:00
ethtool.c
fils_aead.c
fils_aead.h
he.c
ht.c
ibss.c mac80211: add ability to parse CCFS2 2018-09-05 10:03:14 +02:00
ieee80211_i.h mac80211: update driver when MU EDCA params change 2018-12-18 14:19:10 +01:00
iface.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-12-20 11:53:36 -08:00
Kconfig mac80211: rewrite Kconfig text for mesh 2018-12-05 15:32:28 +01:00
key.c mac80211: remove unnecessary NULL check 2018-09-05 10:15:48 +02:00
key.h
led.c
led.h
main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-12-20 11:53:36 -08:00
Makefile mac80211: minstrel: merge with minstrel_ht, always enable VHT support 2018-10-11 16:01:01 +02:00
mesh.c {nl,mac}80211: add rssi to mesh candidates 2018-11-09 11:41:20 +01:00
mesh.h mac80211: Use linked list instead of rhashtable walk for mesh tables 2019-02-15 13:10:10 +01:00
mesh_hwmp.c mac80211: fix TX status reporting for ieee80211s 2018-09-10 09:14:28 +02:00
mesh_pathtbl.c mac80211: Use linked list instead of rhashtable walk for mesh tables 2019-02-15 13:10:10 +01:00
mesh_plink.c {nl,mac}80211: add rssi to mesh candidates 2018-11-09 11:41:20 +01:00
mesh_ps.c
mesh_sync.c
michael.c
michael.h
mlme.c This time we have too many changes to list, highlights: 2018-12-19 08:36:18 -08:00
ocb.c
offchannel.c
pm.c
rate.c
rate.h mac80211: minstrel: merge with minstrel_ht, always enable VHT support 2018-10-11 16:01:01 +02:00
rc80211_minstrel.c mac80211: rc80211_minstrel: remove variance / stddev calculation 2018-10-11 16:01:05 +02:00
rc80211_minstrel.h mac80211: rc80211_minstrel: remove variance / stddev calculation 2018-10-11 16:01:05 +02:00
rc80211_minstrel_debugfs.c mac80211: rc80211_minstrel: remove variance / stddev calculation 2018-10-11 16:01:05 +02:00
rc80211_minstrel_ht.c mac80211: minstrel: do not sample rates 3 times slower than max_prob_rate 2018-10-11 16:01:04 +02:00
rc80211_minstrel_ht.h mac80211: minstrel: reduce minstrel_mcs_groups size 2018-10-11 16:01:02 +02:00
rc80211_minstrel_ht_debugfs.c mac80211: rc80211_minstrel: remove variance / stddev calculation 2018-10-11 16:01:05 +02:00
rx.c mac80211: Add attribute aligned(2) to struct 'action' 2019-01-25 10:17:25 +01:00
scan.c mac80211: allow hardware scan to fall back to software 2018-11-09 11:37:04 +01:00
spectmgmt.c mac80211: add ability to parse CCFS2 2018-09-05 10:03:14 +02:00
sta_info.c {nl,mac}80211: report gate connectivity in station info 2018-11-09 11:38:29 +01:00
sta_info.h {nl,mac}80211: report gate connectivity in station info 2018-11-09 11:38:29 +01:00
status.c mac80211: free skb fraglist before freeing the skb 2018-12-19 09:40:17 +01:00
tdls.c mac80211: TDLS: fix skb queue/priority assignment 2018-09-10 09:13:32 +02:00
tkip.c
tkip.h
trace.c
trace.h mac80211: allow drivers to use peer measurement API 2018-11-09 11:20:34 +01:00
trace_msg.h
tx.c mac80211: ensure that mgmt tx skbs have tailroom for encryption 2019-02-01 11:08:02 +01:00
util.c mac80211: call drv_ibss_join() on restart 2019-02-11 15:50:56 +01:00
vht.c mac80211: copy VHT EXT NSS BW Support/Capable data to station 2018-09-05 10:03:14 +02:00
wep.c crypto: drop mask=CRYPTO_ALG_ASYNC from 'cipher' tfm allocations 2018-11-20 14:26:55 +08:00
wep.h
wme.c
wme.h
wpa.c
wpa.h