path: root/net/mac80211/sta_info.h
diff options
authorEliad Peller <>2015-11-17 10:24:37 +0200
committerJohannes Berg <>2015-12-04 14:43:32 +0100
commitef044763a3ca6b9e0bb65a9ce0cb38c0eca62756 (patch)
tree0c2f3c99895e58135693548cd44c9f1ed880c302 /net/mac80211/sta_info.h
parent0ead2510f8cec11ce96308d79a1b4ee272fb5238 (diff)
mac80211: add atomic uploaded keys iterator
add ieee80211_iter_keys_rcu() to iterate over uploaded keys in atomic context (when rcu is locked) The station removal code removes the keys only after calling synchronize_net(), so it's not safe to iterate the keys at this point (and postponing the actual key deletion with call_rcu() might result in some badly-ordered ops calls). Add a flag to indicate a station is being removed, and skip the configured keys if it's set. Signed-off-by: Eliad Peller <> Signed-off-by: Emmanuel Grumbach <> Signed-off-by: Johannes Berg <>
Diffstat (limited to 'net/mac80211/sta_info.h')
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 2cafb21b422f..d6051629ed15 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -367,6 +367,7 @@ DECLARE_EWMA(signal, 1024, 8)
* @mesh: mesh STA information
* @debugfs: debug filesystem info
* @dead: set to true when sta is unlinked
+ * @removed: set to true when sta is being removed from sta_list
* @uploaded: set to true when sta is uploaded to the driver
* @sta: station information we share with the driver
* @sta_state: duplicates information about station state (for debug)
@@ -412,6 +413,7 @@ struct sta_info {
u16 listen_interval;
bool dead;
+ bool removed;
bool uploaded;