Author: nbd
Date: 2014-07-22 21:06:14 +0200 (Tue, 22 Jul 2014)
New Revision: 41803

Modified:
   branches/attitude_adjustment/package/mac80211/patches/300-pending_work.patch
Log:
mac80211: fix a null pointer deref when querying station info when rate control 
is not initialized (#17061)

Signed-off-by: Felix Fietkau <[email protected]>

Backport of r41801

Modified: 
branches/attitude_adjustment/package/mac80211/patches/300-pending_work.patch
===================================================================
--- 
branches/attitude_adjustment/package/mac80211/patches/300-pending_work.patch    
    2014-07-22 19:06:13 UTC (rev 41802)
+++ 
branches/attitude_adjustment/package/mac80211/patches/300-pending_work.patch    
    2014-07-22 19:06:14 UTC (rev 41803)
@@ -1,3 +1,18 @@
+commit 38695a6e5a940e6a524523b88a33916b016fb2a1
+Author: Felix Fietkau <[email protected]>
+Date:   Fri Jul 11 12:06:18 2014 +0200
+
+    mac80211: fix crash on getting sta info with uninitialized rate control
+    
+    If the expected throughput is queried before rate control has been
+    initialized, the minstrel op for it will crash while trying to access
+    the rate table.
+    Check for WLAN_STA_RATE_CONTROL before attempting to use the rate
+    control op.
+    
+    Reported-by: Jean-Pierre Tosoni <[email protected]>
+    Signed-off-by: Felix Fietkau <[email protected]>
+
 commit c0ee7fa4c0da824ccccc172bf175fb1f86540921
 Author: Felix Fietkau <[email protected]>
 Date:   Wed Jul 16 18:00:31 2014 +0200
@@ -660,7 +675,7 @@
  }
  EXPORT_SYMBOL(ieee80211_sta_block_awake);
  
-@@ -1703,3 +1723,137 @@ u8 sta_info_tx_streams(struct sta_info *
+@@ -1703,3 +1723,140 @@ u8 sta_info_tx_streams(struct sta_info *
        return ((ht_cap->mcs.tx_params & IEEE80211_HT_MCS_TX_MAX_STREAMS_MASK)
                        >> IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT) + 1;
  }
@@ -669,12 +684,15 @@
 +{
 +      struct ieee80211_sub_if_data *sdata = sta->sdata;
 +      struct ieee80211_local *local = sdata->local;
-+      struct rate_control_ref *ref = local->rate_ctrl;
++      struct rate_control_ref *ref = NULL;
 +      struct timespec uptime;
 +      u64 packets = 0;
 +      u32 thr = 0;
 +      int i, ac;
 +
++      if (test_sta_flag(sta, WLAN_STA_RATE_CONTROL))
++              ref = local->rate_ctrl;
++
 +      sinfo->generation = sdata->local->sta_generation;
 +
 +      sinfo->filled = STATION_INFO_INACTIVE_TIME |
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to