From 6e51f21713732899705f35c1be7c62c84acd9c48 Mon Sep 17 00:00:00 2001 From: JasonHuang Date: Thu, 14 Apr 2022 03:07:46 -0500 Subject: [PATCH 092/296] brcmfmac: fixes invalid channel still in the channel list The loop of removing disabled channel will miss detect some channels. Modified the counter condition to solve this bug. Signed-off-by: JasonHuang --- .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index fb0963bc206e..948cb7fc3d06 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -7713,7 +7713,7 @@ static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg, band = wiphy->bands[NL80211_BAND_2GHZ]; if (band) { n_2g = band->n_channels; - for (i = 0; i < band->n_channels; i++) { + for (i = 0; i < n_2g;) { cur = &band->channels[i]; if (cur->flags == IEEE80211_CHAN_DISABLED) { for (j = i; j < n_2g - 1; j++) { @@ -7722,14 +7722,15 @@ static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg, memcpy(cur, next, sizeof(*cur)); } n_2g--; - } + } else + i++; } wiphy->bands[NL80211_BAND_2GHZ]->n_channels = n_2g; } band = wiphy->bands[NL80211_BAND_5GHZ]; if (band) { n_5g = band->n_channels; - for (i = 0; i < band->n_channels; i++) { + for (i = 0; i < n_5g;) { cur = &band->channels[i]; if (cur->flags == IEEE80211_CHAN_DISABLED) { for (j = i; j < n_5g - 1; j++) { @@ -7738,7 +7739,8 @@ static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg, memcpy(cur, next, sizeof(*cur)); } n_5g--; - } + } else + i++; } wiphy->bands[NL80211_BAND_5GHZ]->n_channels = n_5g; } -- 2.25.1