Changeset 14193


Ignore:
Timestamp:
2009-01-26T01:27:49+01:00 (8 years ago)
Author:
nbd
Message:

madwifi: fix a race condition in the wds sta separation, which is triggered by using wpa authentication on the ap

Location:
trunk/package/madwifi/patches
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/370-wdsvap.patch

    r13416 r14193  
    681681                        break; 
    682682                case IEEE80211_M_IBSS: 
    683 @@ -540,16 +548,32 @@ ieee80211_input(struct ieee80211vap * va 
     683@@ -540,16 +548,28 @@ ieee80211_input(struct ieee80211vap * va 
    684684                                vap->iv_stats.is_rx_notassoc++; 
    685685                                goto err; 
    686686                        } 
    687 + 
    688 +                       /* subif isn't fully set up yet, drop the frame */ 
    689 +                       if (ni->ni_subif == ni->ni_vap) 
    690 +                               goto err; 
    691687+ 
    692688                        /* 
     
    717713                                if (!(vap->iv_flags_ext & IEEE80211_FEXT_WDS)) { 
    718714                                        IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, 
    719 @@ -557,7 +581,6 @@ ieee80211_input(struct ieee80211vap * va 
     715@@ -557,7 +577,6 @@ ieee80211_input(struct ieee80211vap * va 
    720716                                        goto err; 
    721717                                } 
     
    725721                                /* Last call increments ref count if !NULL */ 
    726722                                if ((ni_wds != NULL) && (ni_wds != ni)) { 
    727 @@ -608,6 +631,11 @@ ieee80211_input(struct ieee80211vap * va 
     723@@ -608,6 +627,11 @@ ieee80211_input(struct ieee80211vap * va 
    728724                        goto out; 
    729725                } 
     
    737733                 * Handle privacy requirements.  Note that we 
    738734                 * must not be preempted from here until after 
    739 @@ -680,8 +708,12 @@ ieee80211_input(struct ieee80211vap * va 
     735@@ -680,8 +704,12 @@ ieee80211_input(struct ieee80211vap * va 
    740736                if (! accept_data_frame(vap, ni, key, skb, eh)) 
    741737                        goto out; 
     
    752748                IEEE80211_NODE_STAT_ADD(ni, rx_bytes, skb->len); 
    753749                ic->ic_lastdata = jiffies; 
    754 @@ -1114,6 +1146,13 @@ ieee80211_deliver_data(struct ieee80211_ 
     750@@ -1114,6 +1142,17 @@ ieee80211_deliver_data(struct ieee80211_ 
    755751                dev = vap->iv_xrvap->iv_dev; 
    756752 #endif 
     
    759755+        * but keep EAP traffic on the master */ 
    760756+       if (ni->ni_subif && ((eh)->ether_type != __constant_htons(ETHERTYPE_PAE))) { 
    761 +               vap = ni->ni_subif; 
    762 +               dev = vap->iv_dev; 
     757+               if (ni->ni_vap == ni->ni_subif) { 
     758+                       ieee80211_dev_kfree_skb(&skb); 
     759+               } else { 
     760+                       vap = ni->ni_subif; 
     761+                       dev = vap->iv_dev; 
     762+               } 
    763763+       } 
    764764+ 
  • trunk/package/madwifi/patches/392-remove_wds_nodetracking.patch

    r14171 r14193  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -572,36 +572,6 @@ ieee80211_input(struct ieee80211vap * va 
     3@@ -568,36 +568,6 @@ ieee80211_input(struct ieee80211vap * va 
    44                                } 
    55                        } 
  • trunk/package/madwifi/patches/393-mbss_vap_auth.patch

    r14191 r14193  
    250250        KASSERT(skb->len >= sizeof(struct ieee80211_frame_min), 
    251251                ("frame length too short: %u", skb->len)); 
    252 @@ -848,10 +847,11 @@ ieee80211_input(struct ieee80211vap * va 
     252@@ -844,10 +843,11 @@ ieee80211_input(struct ieee80211vap * va 
    253253 err: 
    254254        vap->iv_devstats.rx_errors++; 
     
    264264 #undef HAS_SEQ 
    265265 } 
    266 @@ -933,16 +933,23 @@ int 
     266@@ -929,16 +929,23 @@ int 
    267267 ieee80211_input_all(struct ieee80211com *ic, 
    268268        struct sk_buff *skb, int rssi, u_int64_t rtsf) 
     
    288288                        skb1 = skb_copy(skb, GFP_ATOMIC); 
    289289                        if (skb1 == NULL) { 
    290 @@ -954,8 +961,10 @@ ieee80211_input_all(struct ieee80211com  
     290@@ -950,8 +957,10 @@ ieee80211_input_all(struct ieee80211com  
    291291                        skb1 = skb; 
    292292                        skb = NULL; 
  • trunk/package/madwifi/patches/394-probereq.patch

    r14171 r14193  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -3618,6 +3618,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     3@@ -3611,6 +3611,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    44                        vap->iv_stats.is_rx_mgtdiscard++; 
    55                        return; 
  • trunk/package/madwifi/patches/405-retransmit_check.patch

    r14171 r14193  
    1212--- a/net80211/ieee80211_input.c 
    1313+++ b/net80211/ieee80211_input.c 
    14 @@ -436,7 +436,7 @@ ieee80211_input(struct ieee80211vap * va 
     14@@ -428,7 +428,7 @@ ieee80211_input(struct ieee80211vap * va 
    1515                                tid = 0; 
    1616                        rxseq = le16toh(*(__le16 *)wh->i_seq); 
Note: See TracChangeset for help on using the changeset viewer.