aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/agg-rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/agg-rx.c')
-rw-r--r--net/mac80211/agg-rx.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index d7afd0956970..4b571b211625 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -78,11 +78,18 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
78 sta->ampdu_mlme.tid_rx[tid]->reorder_buf[i] = NULL; 78 sta->ampdu_mlme.tid_rx[tid]->reorder_buf[i] = NULL;
79 } 79 }
80 } 80 }
81
82 spin_lock_bh(&sta->lock);
81 /* free resources */ 83 /* free resources */
82 kfree(sta->ampdu_mlme.tid_rx[tid]->reorder_buf); 84 kfree(sta->ampdu_mlme.tid_rx[tid]->reorder_buf);
83 kfree(sta->ampdu_mlme.tid_rx[tid]); 85
84 sta->ampdu_mlme.tid_rx[tid] = NULL; 86 if (!sta->ampdu_mlme.tid_rx[tid]->shutdown) {
87 kfree(sta->ampdu_mlme.tid_rx[tid]);
88 sta->ampdu_mlme.tid_rx[tid] = NULL;
89 }
90
85 sta->ampdu_mlme.tid_state_rx[tid] = HT_AGG_STATE_IDLE; 91 sta->ampdu_mlme.tid_state_rx[tid] = HT_AGG_STATE_IDLE;
92 spin_unlock_bh(&sta->lock);
86 93
87 rcu_read_unlock(); 94 rcu_read_unlock();
88} 95}