From 39aeb2e4e217e259e2e0e7fab27f45df164d7fba Mon Sep 17 00:00:00 2001 From: mtaylor Date: Mon, 5 Nov 2007 16:34:46 +0000 Subject: [PATCH] Temporary workaround to refcount bugs exposed by r2792 git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2828 0192ed92-7a03-0410-a25b-9323aeb14dbd --- net80211/ieee80211_node.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/net80211/ieee80211_node.c b/net80211/ieee80211_node.c index c20ccc8..339fdc0 100644 --- a/net80211/ieee80211_node.c +++ b/net80211/ieee80211_node.c @@ -738,6 +738,21 @@ static __inline void _node_table_join(struct ieee80211_node_table *nt, struct ie ni->ni_table = nt; tni = ieee80211_ref_node(ni); + /* MT: BEGIN HACK + * XXX: r2792 fixed a bug where ieee80211_ref_node was being + * invoked five times on ni because it was passed to TAILQ_INSERT_TAIL + * which happens to evaluate it's value five times. This fixed a problem + * where we were gaining four extra references, but unfortunately exposed + * other bugs which cause kernel panics. I am working on a fix for this as part + * of ticket #1621. In the meantime, adding these references back is 'wrong' + * but better than getting five new critical defects per day while debugging. + */ + ieee80211_ref_node(ni);ieee80211_ref_node(ni); + ieee80211_ref_node(ni);ieee80211_ref_node(ni); + /* + * END HACK + */ + TAILQ_INSERT_TAIL(&nt->nt_node, tni, ni_list); tni = NULL; -- 2.35.1