summaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-08-24 12:41:19 +0200
committerFelix Fietkau <nbd@nbd.name>2019-08-24 12:47:00 +0200
commitf0992d7a309fc1c44d029494fc2c87b26884577f (patch)
treed6574eb71598d9e5df8616df4eddc68710bb798f /package/kernel/mac80211
parent921675a2d148330a7ec44f10ea4d583b8d7b5a44 (diff)
downloadopenwrt-f0992d7a309fc1c44d029494fc2c87b26884577f.tar.gz
openwrt-f0992d7a309fc1c44d029494fc2c87b26884577f.tar.bz2
openwrt-f0992d7a309fc1c44d029494fc2c87b26884577f.zip
mac80211: fix a regression in the minstrel_ht improvement patches
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211')
-rw-r--r--package/kernel/mac80211/patches/subsys/315-mac80211-minstrel_ht-fix-infinite-loop-because-suppo.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/315-mac80211-minstrel_ht-fix-infinite-loop-because-suppo.patch b/package/kernel/mac80211/patches/subsys/315-mac80211-minstrel_ht-fix-infinite-loop-because-suppo.patch
new file mode 100644
index 0000000000..eb70d4d5d2
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/315-mac80211-minstrel_ht-fix-infinite-loop-because-suppo.patch
@@ -0,0 +1,25 @@
+From: Colin Ian King <colin.king@canonical.com>
+Date: Thu, 22 Aug 2019 13:20:34 +0100
+Subject: [PATCH] mac80211: minstrel_ht: fix infinite loop because supported is
+ not being shifted
+
+Currently the for-loop will spin forever if variable supported is
+non-zero because supported is never changed. Fix this by adding in
+the missing right shift of supported.
+
+Addresses-Coverity: ("Infinite loop")
+Fixes: 48cb39522a9d ("mac80211: minstrel_ht: improve rate probing for devices with static fallback")
+Signed-off-by: Colin Ian King <colin.king@canonical.com>
+---
+
+--- a/net/mac80211/rc80211_minstrel_ht.c
++++ b/net/mac80211/rc80211_minstrel_ht.c
+@@ -634,7 +634,7 @@ minstrel_ht_rate_sample_switch(struct mi
+ u16 supported = mi->supported[g_idx];
+
+ supported >>= mi->max_tp_rate[0] % MCS_GROUP_RATES;
+- for (i = 0; supported; i++) {
++ for (i = 0; supported; supported >>= 1, i++) {
+ if (!(supported & 1))
+ continue;
+