]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
mac80211: fix infinite loop in ieee80211_determine_chantype
authorChris Wright <chrisw@sous-sol.org>
Wed, 31 Jul 2013 19:12:24 +0000 (12:12 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 31 Jul 2013 19:15:36 +0000 (21:15 +0200)
Commit "3d9646d mac80211: fix channel selection bug" introduced a possible
infinite loop by moving the out target above the chandef_downgrade
while loop.  When we downgrade to NL80211_CHAN_WIDTH_20_NOHT, we jump
back up to re-run the while loop...indefinitely.  Replace goto with
break and carry on.  This may not be sufficient to connect to the AP,
but will at least keep the cpu from livelocking.  Thanks to Derek Atkins
as an extra pair of debugging eyes.

Cc: stable@kernel.org
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index ae31968d42d3b855eebe05dcf0e660b4d367ff8f..e3e7d2be9e4110040cdf1b4832bd16ac1b914cdc 100644 (file)
@@ -338,7 +338,7 @@ out:
                if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) {
                        ret = IEEE80211_STA_DISABLE_HT |
                              IEEE80211_STA_DISABLE_VHT;
-                       goto out;
+                       break;
                }
 
                ret |= chandef_downgrade(chandef);