diff options
Diffstat (limited to 'net/mac80211/agg-rx.c')
-rw-r--r-- | net/mac80211/agg-rx.c | 11 |
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 | } |