Skip to content

Commit

Permalink
mac80211: Fixing sparse warning at sta_info.c
Browse files Browse the repository at this point in the history
The commit 42624d4
created following sparse warning
>net/mac80211/sta_info.c:965:24: warning: incorrect type in assignment (different address spaces)
>net/mac80211/sta_info.c:965:24:    expected struct tid_ampdu_tx *tid_tx
>net/mac80211/sta_info.c:965:24:    got struct tid_ampdu_tx [noderef] <asn:4>*<noident>

Making use of rcu_dereference_protected to fix the problem.

V2:
 - Replacing rcu_dereference with rcu_dereference_protected
   as suggested by Johannes.
 - Adding mutex_lock/unlock to satisfy the condition at
   rcu_dereference_protected

Cc: Nishant Sarmukadam <[email protected]>
Reported-by: Johannes Berg <[email protected]>
Signed-off-by: Yogesh Ashok Powar <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
yogeshpowar authored and linvjw committed Dec 19, 2011
1 parent 23de5dc commit 27bf888
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions net/mac80211/sta_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -822,10 +822,13 @@ static int __must_check __sta_info_destroy(struct sta_info *sta)
* until the aggregation stop completes. Refer
* http://thread.gmane.org/gmane.linux.kernel.wireless.general/81936
*/

mutex_lock(&sta->ampdu_mlme.mtx);

for (i = 0; i < STA_TID_NUM; i++) {
if (!sta->ampdu_mlme.tid_tx[i])
tid_tx = rcu_dereference_protected_tid_tx(sta, i);
if (!tid_tx)
continue;
tid_tx = sta->ampdu_mlme.tid_tx[i];
if (skb_queue_len(&tid_tx->pending)) {
#ifdef CONFIG_MAC80211_HT_DEBUG
wiphy_debug(local->hw.wiphy, "TX A-MPDU purging %d "
Expand All @@ -837,6 +840,8 @@ static int __must_check __sta_info_destroy(struct sta_info *sta)
kfree_rcu(tid_tx, rcu_head);
}

mutex_unlock(&sta->ampdu_mlme.mtx);

sta_info_free(local, sta);

return 0;
Expand Down

0 comments on commit 27bf888

Please sign in to comment.