summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Sperling <stsp@cvs.openbsd.org>2017-01-16 09:35:44 +0000
committerStefan Sperling <stsp@cvs.openbsd.org>2017-01-16 09:35:44 +0000
commitad74cec1eb21a998df1e5915f56e7c16a22eed49 (patch)
treea51c20ddcb0b60ae4d1f433f0fa9a9b6a93525bb
parent97ac971e60f365441722d613ac97db7e6f32ce9e (diff)
Reset block ack state and cancel related timeouts when a HT node disassociates.
The existing code (from damien@) already took care of freeing related buffers but because block ack state was not reset we were still trying to use these buffers if the node sent another A-MPDU. This problem only affects 11n hostap. Fixes kernel crash reported by Timo Myyra on bugs@
-rw-r--r--sys/net80211/ieee80211_node.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
index 1d5c75f6176..af318f1ee89 100644
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_node.c,v 1.111 2017/01/09 20:18:59 stsp Exp $ */
+/* $OpenBSD: ieee80211_node.c,v 1.112 2017/01/16 09:35:43 stsp Exp $ */
/* $NetBSD: ieee80211_node.c,v 1.14 2004/05/09 09:18:47 dyoung Exp $ */
/*-
@@ -1638,6 +1638,7 @@ ieee80211_node_leave_ht(struct ieee80211com *ic, struct ieee80211_node *ni)
int i;
/* free all Block Ack records */
+ ieee80211_ba_del(ni);
for (tid = 0; tid < IEEE80211_NUM_TID; tid++) {
ba = &ni->ni_rx_ba[tid];
if (ba->ba_buf != NULL) {