Changeset 36053


Ignore:
Timestamp:
2013-03-15T23:29:27+01:00 (5 years ago)
Author:
nbd
Message:

mac80211: merge a fix for a race condition on station removal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r36040 r36053  
    897897        if (needreset) { 
    898898                ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, 
     899--- a/net/mac80211/sta_info.c 
     900+++ b/net/mac80211/sta_info.c 
     901@@ -766,6 +766,7 @@ int __must_check __sta_info_destroy(stru 
     902        struct ieee80211_local *local; 
     903        struct ieee80211_sub_if_data *sdata; 
     904        int ret, i; 
     905+       bool have_key = false; 
     906  
     907        might_sleep(); 
     908  
     909@@ -793,12 +794,19 @@ int __must_check __sta_info_destroy(stru 
     910        list_del_rcu(&sta->list); 
     911  
     912        mutex_lock(&local->key_mtx); 
     913-       for (i = 0; i < NUM_DEFAULT_KEYS; i++) 
     914+       for (i = 0; i < NUM_DEFAULT_KEYS; i++) { 
     915                __ieee80211_key_free(key_mtx_dereference(local, sta->gtk[i])); 
     916-       if (sta->ptk) 
     917+               have_key = true; 
     918+       } 
     919+       if (sta->ptk) { 
     920                __ieee80211_key_free(key_mtx_dereference(local, sta->ptk)); 
     921+               have_key = true; 
     922+       } 
     923        mutex_unlock(&local->key_mtx); 
     924  
     925+       if (!have_key) 
     926+               synchronize_net(); 
     927+ 
     928        sta->dead = true; 
     929  
     930        local->num_sta--; 
Note: See TracChangeset for help on using the changeset viewer.