Author: nbd
Date: 2016-01-29 15:23:23 +0100 (Fri, 29 Jan 2016)
New Revision: 48550

Added:
   
trunk/package/kernel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch
Log:
mac80211: fix an out of bounds access issue in minstrel_ht

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

Added: 
trunk/package/kernel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch
===================================================================
--- 
trunk/package/kernel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch
                                (rev 0)
+++ 
trunk/package/kernel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch
        2016-01-29 14:23:23 UTC (rev 48550)
@@ -0,0 +1,45 @@
+From: Konstantin Khlebnikov <[email protected]>
+Date: Fri, 29 Jan 2016 11:35:12 +0300
+Subject: [PATCH] mac80211: minstrel_ht: fix out-of-bound in
+ minstrel_ht_set_best_prob_rate
+
+Patch fixes this splat
+
+BUG: KASAN: slab-out-of-bounds in minstrel_ht_update_stats.isra.7+0x6e1/0x9e0
+[mac80211] at addr ffff8800cee640f4 Read of size 4 by task swapper/3/0
+
+Signed-off-by: Konstantin Khlebnikov <[email protected]>
+Link: 
http://lkml.kernel.org/r/calygninyjhsavne35qs6ucgasb2dx1_i5hcravuox14otz2...@mail.gmail.com
+---
+
+--- a/net/mac80211/rc80211_minstrel_ht.c
++++ b/net/mac80211/rc80211_minstrel_ht.c
+@@ -414,15 +414,16 @@ minstrel_ht_set_best_prob_rate(struct mi
+           (max_tp_group != MINSTREL_CCK_GROUP))
+               return;
+ 
++      max_gpr_group = mg->max_group_prob_rate / MCS_GROUP_RATES;
++      max_gpr_idx = mg->max_group_prob_rate % MCS_GROUP_RATES;
++      max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_ewma;
++
+       if (mrs->prob_ewma > MINSTREL_FRAC(75, 100)) {
+               cur_tp_avg = minstrel_ht_get_tp_avg(mi, cur_group, cur_idx,
+                                                   mrs->prob_ewma);
+               if (cur_tp_avg > tmp_tp_avg)
+                       mi->max_prob_rate = index;
+ 
+-              max_gpr_group = mg->max_group_prob_rate / MCS_GROUP_RATES;
+-              max_gpr_idx = mg->max_group_prob_rate % MCS_GROUP_RATES;
+-              max_gpr_prob = 
mi->groups[max_gpr_group].rates[max_gpr_idx].prob_ewma;
+               max_gpr_tp_avg = minstrel_ht_get_tp_avg(mi, max_gpr_group,
+                                                       max_gpr_idx,
+                                                       max_gpr_prob);
+@@ -431,7 +432,7 @@ minstrel_ht_set_best_prob_rate(struct mi
+       } else {
+               if (mrs->prob_ewma > tmp_prob)
+                       mi->max_prob_rate = index;
+-              if (mrs->prob_ewma > 
mg->rates[mg->max_group_prob_rate].prob_ewma)
++              if (mrs->prob_ewma > max_gpr_prob)
+                       mg->max_group_prob_rate = index;
+       }
+ }
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to