Commit b56e4b85 authored by Chris Wright's avatar Chris Wright Committed by Johannes Berg

mac80211: fix infinite loop in ieee80211_determine_chantype

Commit "3d9646d0 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: default avatarChris Wright <chrisw@sous-sol.org>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent c319d50b
...@@ -338,7 +338,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata, ...@@ -338,7 +338,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) { if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) {
ret = IEEE80211_STA_DISABLE_HT | ret = IEEE80211_STA_DISABLE_HT |
IEEE80211_STA_DISABLE_VHT; IEEE80211_STA_DISABLE_VHT;
goto out; break;
} }
ret |= chandef_downgrade(chandef); ret |= chandef_downgrade(chandef);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment