Skip to content

Commit

Permalink
mac80211: delete AddBA response timer
Browse files Browse the repository at this point in the history
We never delete the addBA response timer, which
is typically fine, but if the station it belongs
to is deleted very quickly after starting the BA
session, before the peer had a chance to reply,
the timer may fire after the station struct has
been freed already. Therefore, we need to delete
the timer in a suitable spot -- best when the
session is being stopped (which will happen even
then) in which case the delete will be a no-op
most of the time.

I've reproduced the scenario and tested the fix.

This fixes the crash reported at
http://mid.gmane.org/4CAB6F96.6090701@candelatech.com

Cc: stable@kernel.org
Reported-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Oct 6, 2010
1 parent 918df62 commit 4427148
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions net/mac80211/agg-tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@ int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,

set_bit(HT_AGG_STATE_STOPPING, &tid_tx->state);

del_timer_sync(&tid_tx->addba_resp_timer);

/*
* After this packets are no longer handed right through
* to the driver but are put onto tid_tx->pending instead,
Expand Down

0 comments on commit 4427148

Please sign in to comment.