diff options
author | adrian <adrian@FreeBSD.org> | 2012-08-15 20:01:28 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-08-15 20:01:28 +0000 |
commit | 313bc375b29119eae385b56df6ef552e2573b934 (patch) | |
tree | 122cb1aaffe36394585b2a6e1cc778b2e548143e /sys/net80211/ieee80211_node.h | |
parent | e3f6b14d4f65d89f072b2b4930db6518a8869117 (diff) | |
download | FreeBSD-src-313bc375b29119eae385b56df6ef552e2573b934.zip FreeBSD-src-313bc375b29119eae385b56df6ef552e2573b934.tar.gz |
Don't call the node iteration function inside the node table / node
iterate lock.
This causes LORs and deadlocks as some code paths will have the com lock
held when calling ieee80211_iterate_nodes().
Here, the comlock isn't held during the node table and node iteration
locks; and the callback isn't called with any (extra) lock held.
PR: kern/170098
Submitted by: moonlightakkiy@yahoo.ca
MFC after: 4 weeks
Diffstat (limited to 'sys/net80211/ieee80211_node.h')
-rw-r--r-- | sys/net80211/ieee80211_node.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h index 83b108b..48eae2d 100644 --- a/sys/net80211/ieee80211_node.h +++ b/sys/net80211/ieee80211_node.h @@ -438,6 +438,8 @@ int ieee80211_node_delucastkey(struct ieee80211_node *); void ieee80211_node_timeout(void *arg); typedef void ieee80211_iter_func(void *, struct ieee80211_node *); +int ieee80211_iterate_nt(struct ieee80211_node_table *, + struct ieee80211_node **, uint16_t); void ieee80211_iterate_nodes(struct ieee80211_node_table *, ieee80211_iter_func *, void *); |