mac80211: minstrel_ht: fix infinite loop because supported is not being shifted
authorColin Ian King <colin.king@canonical.com>
Thu, 22 Aug 2019 12:20:34 +0000 (13:20 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 22 Aug 2019 19:58:18 +0000 (21:58 +0200)
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>
Link: https://lore.kernel.org/r/20190822122034.28664-1-colin.king@canonical.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rc80211_minstrel_ht.c

index a011685148403a83a00976c95ae9a675fe3ae572..0ef2633349b5d7809127e1ad79f9108b57ac1481 100644 (file)
@@ -634,7 +634,7 @@ minstrel_ht_rate_sample_switch(struct minstrel_priv *mp,
                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;