* [PATCH for-6.2 0/3] wifi: brcmfmac: regression fixes
@ 2023-01-03 12:41 Arend van Spriel
2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Arend van Spriel @ 2023-01-03 12:41 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel
[-- Attachment #1: Type: text/plain, Size: 884 bytes --]
Stefan Wahren reported a minor issue where the kernel log was filled
with error messages at regular interval. This happens in new functionality
added in 6.2 merge window. Found a potential NULL-deref which will happen
when device does not have 5GHz band. The last patch is really a cosmetic
one for wireless-next, but I added it here for reference. I can resend that
later when the other patches are distributed into wireless-next whenever that
happens.
This series applies to the main branch of the wireless repository.
Arend van Spriel (3):
wifi: brcmfmac: avoid handling disabled channels for survey dump
wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device
wifi: brcmfmac: change cfg80211_set_channel() name and signature
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 42 +++++++++----------
1 file changed, 20 insertions(+), 22 deletions(-)
--
2.32.0
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4219 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump 2023-01-03 12:41 [PATCH for-6.2 0/3] wifi: brcmfmac: regression fixes Arend van Spriel @ 2023-01-03 12:41 ` Arend van Spriel 2023-01-03 19:15 ` Stefan Wahren 2023-01-16 11:26 ` Kalle Valo 2023-01-03 12:41 ` [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature Arend van Spriel 2 siblings, 2 replies; 11+ messages in thread From: Arend van Spriel @ 2023-01-03 12:41 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel, Stefan Wahren [-- Attachment #1: Type: text/plain, Size: 4425 bytes --] An issue was reported in which periodically error messages are printed in the kernel log: [ 26.303445] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 [ 26.303554] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin failed with error -2 [ 26.516752] brcmfmac_wcc: brcmf_wcc_attach: executing [ 26.528264] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Jan 4 2021 19:56:29 version 7.45.229 (617f1f5 CY) FWID 01-2dbd9d2e [ 27.076829] Bluetooth: hci0: BCM: features 0x2f [ 27.078592] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+ [ 27.078601] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0342 [ 30.142104] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SS [ 30.590017] Bluetooth: MGMT ver 1.22 [ 104.897615] brcmfmac: cfg80211_set_channel: set chanspec 0x100e fail, reason -52 [ 104.897992] brcmfmac: cfg80211_set_channel: set chanspec 0xd022 fail, reason -52 [ 105.007672] brcmfmac: cfg80211_set_channel: set chanspec 0xd026 fail, reason -52 [ 105.117654] brcmfmac: cfg80211_set_channel: set chanspec 0xd02a fail, reason -52 [ 105.227636] brcmfmac: cfg80211_set_channel: set chanspec 0xd02e fail, reason -52 [ 106.987552] brcmfmac: cfg80211_set_channel: set chanspec 0xd090 fail, reason -52 [ 106.987911] brcmfmac: cfg80211_set_channel: set chanspec 0xd095 fail, reason -52 [ 106.988233] brcmfmac: cfg80211_set_channel: set chanspec 0xd099 fail, reason -52 [ 106.988565] brcmfmac: cfg80211_set_channel: set chanspec 0xd09d fail, reason -52 [ 106.988909] brcmfmac: cfg80211_set_channel: set chanspec 0xd0a1 fail, reason -52 This happens in brcmf_cfg80211_dump_survey() because we try a disabled channel. When channel is marked as disabled we do not need to fill any other info so bail out. Fixes: 6c04deae1438 ("brcmfmac: Add dump_survey cfg80211 ops for HostApd AutoChannelSelection") Reported-by: Stefan Wahren <stefan.wahren@i2se.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index bff3128c2f26..478ca3848c64 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -7937,6 +7937,9 @@ cfg80211_set_channel(struct wiphy *wiphy, struct net_device *dev, struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); + if (chan->flags & IEEE80211_CHAN_DISABLED) + return -EINVAL; + /* set_channel */ chspec = channel_to_chanspec(&cfg->d11inf, chan); if (chspec != INVCHANSPEC) { @@ -7961,7 +7964,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); struct brcmf_dump_survey survey = {}; struct ieee80211_supported_band *band; - struct ieee80211_channel *chan; struct cca_msrmnt_query req; u32 noise; int err; @@ -7987,13 +7989,10 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, } /* Setting current channel to the requested channel */ - chan = &band->channels[idx]; - err = cfg80211_set_channel(wiphy, ndev, chan, NL80211_CHAN_HT20); - if (err) { - info->channel = chan; - info->filled = 0; + info->filled = 0; + info->channel = &band->channels[idx]; + if (cfg80211_set_channel(wiphy, ndev, info->channel, NL80211_CHAN_HT20)) return 0; - } /* Disable mpc */ brcmf_set_mpc(ifp, 0); @@ -8028,7 +8027,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, if (err) goto exit; - info->channel = chan; info->noise = noise; info->time = ACS_MSRMNT_DELAY; info->time_busy = ACS_MSRMNT_DELAY - survey.idle; @@ -8040,7 +8038,7 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, SURVEY_INFO_TIME_TX; brcmf_dbg(INFO, "OBSS dump: channel %d: survey duration %d\n", - ieee80211_frequency_to_channel(chan->center_freq), + ieee80211_frequency_to_channel(info->channel->center_freq), ACS_MSRMNT_DELAY); brcmf_dbg(INFO, "noise(%d) busy(%llu) rx(%llu) tx(%llu)\n", info->noise, info->time_busy, info->time_rx, info->time_tx); -- 2.32.0 [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump 2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel @ 2023-01-03 19:15 ` Stefan Wahren 2023-01-03 19:44 ` Arend van Spriel 2023-01-16 11:26 ` Kalle Valo 1 sibling, 1 reply; 11+ messages in thread From: Stefan Wahren @ 2023-01-03 19:15 UTC (permalink / raw) To: Arend van Spriel, Kalle Valo; +Cc: linux-wireless Hi Arend, hi Kalle, Am 03.01.23 um 13:41 schrieb Arend van Spriel: > An issue was reported in which periodically error messages are > printed in the kernel log: > > [ 26.303445] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 > [ 26.303554] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin failed with error -2 > [ 26.516752] brcmfmac_wcc: brcmf_wcc_attach: executing regardless of this patch the commit d6a5c562214f ("wifi: brcmfmac: add support for vendor-specific firmware api") introduced this error message wcc/core.c, but i guess this should be trace or info message? > [ 26.528264] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Jan 4 2021 19:56:29 version 7.45.229 (617f1f5 CY) FWID 01-2dbd9d2e > [ 27.076829] Bluetooth: hci0: BCM: features 0x2f > [ 27.078592] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+ > [ 27.078601] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0342 > [ 30.142104] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SS > [ 30.590017] Bluetooth: MGMT ver 1.22 > [ 104.897615] brcmfmac: cfg80211_set_channel: set chanspec 0x100e fail, reason -52 > [ 104.897992] brcmfmac: cfg80211_set_channel: set chanspec 0xd022 fail, reason -52 > [ 105.007672] brcmfmac: cfg80211_set_channel: set chanspec 0xd026 fail, reason -52 > [ 105.117654] brcmfmac: cfg80211_set_channel: set chanspec 0xd02a fail, reason -52 > [ 105.227636] brcmfmac: cfg80211_set_channel: set chanspec 0xd02e fail, reason -52 > [ 106.987552] brcmfmac: cfg80211_set_channel: set chanspec 0xd090 fail, reason -52 > [ 106.987911] brcmfmac: cfg80211_set_channel: set chanspec 0xd095 fail, reason -52 > [ 106.988233] brcmfmac: cfg80211_set_channel: set chanspec 0xd099 fail, reason -52 > [ 106.988565] brcmfmac: cfg80211_set_channel: set chanspec 0xd09d fail, reason -52 > [ 106.988909] brcmfmac: cfg80211_set_channel: set chanspec 0xd0a1 fail, reason -52 > > This happens in brcmf_cfg80211_dump_survey() because we try a disabled > channel. When channel is marked as disabled we do not need to fill any > other info so bail out. > > Fixes: 6c04deae1438 ("brcmfmac: Add dump_survey cfg80211 ops for HostApd AutoChannelSelection") > Reported-by: Stefan Wahren <stefan.wahren@i2se.com> > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> this patch is: Tested-by: Stefan Wahren <stefan.wahren@i2se.com> Thanks > --- > .../broadcom/brcm80211/brcmfmac/cfg80211.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > index bff3128c2f26..478ca3848c64 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c > @@ -7937,6 +7937,9 @@ cfg80211_set_channel(struct wiphy *wiphy, struct net_device *dev, > struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); > struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); > > + if (chan->flags & IEEE80211_CHAN_DISABLED) > + return -EINVAL; > + > /* set_channel */ > chspec = channel_to_chanspec(&cfg->d11inf, chan); > if (chspec != INVCHANSPEC) { > @@ -7961,7 +7964,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, > struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); > struct brcmf_dump_survey survey = {}; > struct ieee80211_supported_band *band; > - struct ieee80211_channel *chan; > struct cca_msrmnt_query req; > u32 noise; > int err; > @@ -7987,13 +7989,10 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, > } > > /* Setting current channel to the requested channel */ > - chan = &band->channels[idx]; > - err = cfg80211_set_channel(wiphy, ndev, chan, NL80211_CHAN_HT20); > - if (err) { > - info->channel = chan; > - info->filled = 0; > + info->filled = 0; > + info->channel = &band->channels[idx]; > + if (cfg80211_set_channel(wiphy, ndev, info->channel, NL80211_CHAN_HT20)) > return 0; > - } > > /* Disable mpc */ > brcmf_set_mpc(ifp, 0); > @@ -8028,7 +8027,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, > if (err) > goto exit; > > - info->channel = chan; > info->noise = noise; > info->time = ACS_MSRMNT_DELAY; > info->time_busy = ACS_MSRMNT_DELAY - survey.idle; > @@ -8040,7 +8038,7 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, > SURVEY_INFO_TIME_TX; > > brcmf_dbg(INFO, "OBSS dump: channel %d: survey duration %d\n", > - ieee80211_frequency_to_channel(chan->center_freq), > + ieee80211_frequency_to_channel(info->channel->center_freq), > ACS_MSRMNT_DELAY); > brcmf_dbg(INFO, "noise(%d) busy(%llu) rx(%llu) tx(%llu)\n", > info->noise, info->time_busy, info->time_rx, info->time_tx); ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump 2023-01-03 19:15 ` Stefan Wahren @ 2023-01-03 19:44 ` Arend van Spriel 0 siblings, 0 replies; 11+ messages in thread From: Arend van Spriel @ 2023-01-03 19:44 UTC (permalink / raw) To: Stefan Wahren, Kalle Valo; +Cc: linux-wireless [-- Attachment #1: Type: text/plain, Size: 4483 bytes --] On 1/3/2023 8:15 PM, Stefan Wahren wrote: > Hi Arend, > hi Kalle, > > Am 03.01.23 um 13:41 schrieb Arend van Spriel: >> An issue was reported in which periodically error messages are >> printed in the kernel log: >> >> [ 26.303445] brcmfmac: brcmf_fw_alloc_request: using >> brcm/brcmfmac43455-sdio for chip BCM4345/6 >> [ 26.303554] brcmfmac mmc1:0001:1: Direct firmware load for >> brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin failed with >> error -2 >> [ 26.516752] brcmfmac_wcc: brcmf_wcc_attach: executing > regardless of this patch the commit d6a5c562214f ("wifi: brcmfmac: add > support for vendor-specific firmware api") introduced this error message > wcc/core.c, but i guess this should be trace or info message? Ah, yes. I will change that for the next release. Thanks for pointing at that. >> [ 26.528264] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 >> wl0: Jan 4 2021 19:56:29 version 7.45.229 (617f1f5 CY) FWID 01-2dbd9d2e >> [ 27.076829] Bluetooth: hci0: BCM: features 0x2f >> [ 27.078592] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+ >> [ 27.078601] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0342 [...] >> Fixes: 6c04deae1438 ("brcmfmac: Add dump_survey cfg80211 ops for >> HostApd AutoChannelSelection") >> Reported-by: Stefan Wahren <stefan.wahren@i2se.com> >> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> > > this patch is: > > Tested-by: Stefan Wahren <stefan.wahren@i2se.com> Appreciated. Regards, Arend > Thanks >> --- >> .../broadcom/brcm80211/brcmfmac/cfg80211.c | 16 +++++++--------- >> 1 file changed, 7 insertions(+), 9 deletions(-) >> >> diff --git >> a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> index bff3128c2f26..478ca3848c64 100644 >> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c >> @@ -7937,6 +7937,9 @@ cfg80211_set_channel(struct wiphy *wiphy, struct >> net_device *dev, >> struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); >> struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); >> + if (chan->flags & IEEE80211_CHAN_DISABLED) >> + return -EINVAL; >> + >> /* set_channel */ >> chspec = channel_to_chanspec(&cfg->d11inf, chan); >> if (chspec != INVCHANSPEC) { >> @@ -7961,7 +7964,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, >> struct net_device *ndev, >> struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); >> struct brcmf_dump_survey survey = {}; >> struct ieee80211_supported_band *band; >> - struct ieee80211_channel *chan; >> struct cca_msrmnt_query req; >> u32 noise; >> int err; >> @@ -7987,13 +7989,10 @@ brcmf_cfg80211_dump_survey(struct wiphy >> *wiphy, struct net_device *ndev, >> } >> /* Setting current channel to the requested channel */ >> - chan = &band->channels[idx]; >> - err = cfg80211_set_channel(wiphy, ndev, chan, NL80211_CHAN_HT20); >> - if (err) { >> - info->channel = chan; >> - info->filled = 0; >> + info->filled = 0; >> + info->channel = &band->channels[idx]; >> + if (cfg80211_set_channel(wiphy, ndev, info->channel, >> NL80211_CHAN_HT20)) >> return 0; >> - } >> /* Disable mpc */ >> brcmf_set_mpc(ifp, 0); >> @@ -8028,7 +8027,6 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, >> struct net_device *ndev, >> if (err) >> goto exit; >> - info->channel = chan; >> info->noise = noise; >> info->time = ACS_MSRMNT_DELAY; >> info->time_busy = ACS_MSRMNT_DELAY - survey.idle; >> @@ -8040,7 +8038,7 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, >> struct net_device *ndev, >> SURVEY_INFO_TIME_TX; >> brcmf_dbg(INFO, "OBSS dump: channel %d: survey duration %d\n", >> - ieee80211_frequency_to_channel(chan->center_freq), >> + ieee80211_frequency_to_channel(info->channel->center_freq), >> ACS_MSRMNT_DELAY); >> brcmf_dbg(INFO, "noise(%d) busy(%llu) rx(%llu) tx(%llu)\n", >> info->noise, info->time_busy, info->time_rx, info->time_tx); [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump 2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel 2023-01-03 19:15 ` Stefan Wahren @ 2023-01-16 11:26 ` Kalle Valo 1 sibling, 0 replies; 11+ messages in thread From: Kalle Valo @ 2023-01-16 11:26 UTC (permalink / raw) To: Arend van Spriel; +Cc: linux-wireless, Arend van Spriel, Stefan Wahren Arend van Spriel <arend.vanspriel@broadcom.com> wrote: > An issue was reported in which periodically error messages are > printed in the kernel log: > > [ 26.303445] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 > [ 26.303554] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin failed with error -2 > [ 26.516752] brcmfmac_wcc: brcmf_wcc_attach: executing > [ 26.528264] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Jan 4 2021 19:56:29 version 7.45.229 (617f1f5 CY) FWID 01-2dbd9d2e > [ 27.076829] Bluetooth: hci0: BCM: features 0x2f > [ 27.078592] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+ > [ 27.078601] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0342 > [ 30.142104] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SS > [ 30.590017] Bluetooth: MGMT ver 1.22 > [ 104.897615] brcmfmac: cfg80211_set_channel: set chanspec 0x100e fail, reason -52 > [ 104.897992] brcmfmac: cfg80211_set_channel: set chanspec 0xd022 fail, reason -52 > [ 105.007672] brcmfmac: cfg80211_set_channel: set chanspec 0xd026 fail, reason -52 > [ 105.117654] brcmfmac: cfg80211_set_channel: set chanspec 0xd02a fail, reason -52 > [ 105.227636] brcmfmac: cfg80211_set_channel: set chanspec 0xd02e fail, reason -52 > [ 106.987552] brcmfmac: cfg80211_set_channel: set chanspec 0xd090 fail, reason -52 > [ 106.987911] brcmfmac: cfg80211_set_channel: set chanspec 0xd095 fail, reason -52 > [ 106.988233] brcmfmac: cfg80211_set_channel: set chanspec 0xd099 fail, reason -52 > [ 106.988565] brcmfmac: cfg80211_set_channel: set chanspec 0xd09d fail, reason -52 > [ 106.988909] brcmfmac: cfg80211_set_channel: set chanspec 0xd0a1 fail, reason -52 > > This happens in brcmf_cfg80211_dump_survey() because we try a disabled > channel. When channel is marked as disabled we do not need to fill any > other info so bail out. > > Fixes: 6c04deae1438 ("brcmfmac: Add dump_survey cfg80211 ops for HostApd AutoChannelSelection") > Reported-by: Stefan Wahren <stefan.wahren@i2se.com> > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> > Tested-by: Stefan Wahren <stefan.wahren@i2se.com> 2 patches applied to wireless.git, thanks. e5d1ab1a73ad wifi: brcmfmac: avoid handling disabled channels for survey dump aadb50d15712 wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device -- https://patchwork.kernel.org/project/linux-wireless/patch/20230103124117.271988-2-arend.vanspriel@broadcom.com/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device 2023-01-03 12:41 [PATCH for-6.2 0/3] wifi: brcmfmac: regression fixes Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel @ 2023-01-03 12:41 ` Arend van Spriel 2023-01-03 13:36 ` Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature Arend van Spriel 2 siblings, 1 reply; 11+ messages in thread From: Arend van Spriel @ 2023-01-03 12:41 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel [-- Attachment #1: Type: text/plain, Size: 1979 bytes --] When dealing with a device for 2GHz band only the wiphy->bands for 5GHz will be NULL. This would result in a NULL-deref in the brcmf_cfg80211_dump_survey() function. Rework the code with a for-loop to make it easier to add another band. Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 478ca3848c64..b115902eb475 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -7964,6 +7964,7 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); struct brcmf_dump_survey survey = {}; struct ieee80211_supported_band *band; + enum nl80211_band band_id; struct cca_msrmnt_query req; u32 noise; int err; @@ -7976,21 +7977,23 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, return -EBUSY; } - band = wiphy->bands[NL80211_BAND_2GHZ]; - if (band && idx >= band->n_channels) { - idx -= band->n_channels; - band = NULL; - } + for (band_id = 0; band_id < NUM_NL80211_BANDS; band_id++) { + band = wiphy->bands[band_id]; + if (!band) + continue; + if (idx >= band->n_channels) { + idx -= band->n_channels; + continue; + } - if (!band || idx >= band->n_channels) { - band = wiphy->bands[NL80211_BAND_5GHZ]; - if (idx >= band->n_channels) - return -ENOENT; + info->channel = &band->channels[idx]; + break; } + if (band_id == NUM_NL80211_BANDS) + return -ENOENT; /* Setting current channel to the requested channel */ info->filled = 0; - info->channel = &band->channels[idx]; if (cfg80211_set_channel(wiphy, ndev, info->channel, NL80211_CHAN_HT20)) return 0; -- 2.32.0 [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device 2023-01-03 12:41 ` [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device Arend van Spriel @ 2023-01-03 13:36 ` Arend van Spriel 0 siblings, 0 replies; 11+ messages in thread From: Arend van Spriel @ 2023-01-03 13:36 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless [-- Attachment #1: Type: text/plain, Size: 616 bytes --] On 1/3/2023 1:41 PM, Arend van Spriel wrote: > When dealing with a device for 2GHz band only the wiphy->bands for > 5GHz will be NULL. This would result in a NULL-deref in the > brcmf_cfg80211_dump_survey() function. Rework the code with a > for-loop to make it easier to add another band. Forgot the Fixes tag here: Fixes: 6c04deae1438 ("brcmfmac: Add dump_survey cfg80211 ops for HostApd AutoChannelSelection") > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> > --- > .../broadcom/brcm80211/brcmfmac/cfg80211.c | 23 +++++++++++-------- > 1 file changed, 13 insertions(+), 10 deletions(-) [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature 2023-01-03 12:41 [PATCH for-6.2 0/3] wifi: brcmfmac: regression fixes Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device Arend van Spriel @ 2023-01-03 12:41 ` Arend van Spriel 2023-01-09 15:50 ` Kalle Valo 2023-02-13 16:54 ` Kalle Valo 2 siblings, 2 replies; 11+ messages in thread From: Arend van Spriel @ 2023-01-03 12:41 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel [-- Attachment #1: Type: text/plain, Size: 1578 bytes --] The function cfg80211_set_channel() is an static function in brcmfmac but the name is misleading. Hence rename it with 'brcmf' prefix. Also changing the parameters to avoid additional conversions. Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> --- .../net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index b115902eb475..a9690ec4c850 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -7928,13 +7928,10 @@ brcmf_dump_obss(struct brcmf_if *ifp, struct cca_msrmnt_query req, } static s32 -cfg80211_set_channel(struct wiphy *wiphy, struct net_device *dev, - struct ieee80211_channel *chan, - enum nl80211_channel_type channel_type) +brcmf_set_channel(struct brcmf_cfg80211_info *cfg, struct ieee80211_channel *chan) { u16 chspec = 0; int err = 0; - struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); if (chan->flags & IEEE80211_CHAN_DISABLED) @@ -7994,7 +7991,7 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev, /* Setting current channel to the requested channel */ info->filled = 0; - if (cfg80211_set_channel(wiphy, ndev, info->channel, NL80211_CHAN_HT20)) + if (brcmf_set_channel(cfg, info->channel)) return 0; /* Disable mpc */ -- 2.32.0 [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature 2023-01-03 12:41 ` [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature Arend van Spriel @ 2023-01-09 15:50 ` Kalle Valo 2023-01-09 17:38 ` Arend Van Spriel 2023-02-13 16:54 ` Kalle Valo 1 sibling, 1 reply; 11+ messages in thread From: Kalle Valo @ 2023-01-09 15:50 UTC (permalink / raw) To: Arend van Spriel; +Cc: linux-wireless Arend van Spriel <arend.vanspriel@broadcom.com> writes: > The function cfg80211_set_channel() is an static function in brcmfmac > but the name is misleading. Hence rename it with 'brcmf' prefix. Also > changing the parameters to avoid additional conversions. > > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> If I understood correctly this patch 3 is for wireless-next. So adding a reminder for myself to _not_ take this to wireless tree :) (I wish patchwork would have a support for offline notes so I would not need to send emails like this) -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature 2023-01-09 15:50 ` Kalle Valo @ 2023-01-09 17:38 ` Arend Van Spriel 0 siblings, 0 replies; 11+ messages in thread From: Arend Van Spriel @ 2023-01-09 17:38 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless [-- Attachment #1: Type: text/plain, Size: 584 bytes --] On January 9, 2023 4:51:03 PM Kalle Valo <kvalo@kernel.org> wrote: > Arend van Spriel <arend.vanspriel@broadcom.com> writes: > >> The function cfg80211_set_channel() is an static function in brcmfmac >> but the name is misleading. Hence rename it with 'brcmf' prefix. Also >> changing the parameters to avoid additional conversions. >> >> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> > > If I understood correctly this patch 3 is for wireless-next. So adding a > reminder for myself to _not_ take this to wireless tree :) FWIW you understood correctly. Gr. AvS [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4219 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature 2023-01-03 12:41 ` [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature Arend van Spriel 2023-01-09 15:50 ` Kalle Valo @ 2023-02-13 16:54 ` Kalle Valo 1 sibling, 0 replies; 11+ messages in thread From: Kalle Valo @ 2023-02-13 16:54 UTC (permalink / raw) To: Arend van Spriel; +Cc: linux-wireless, Arend van Spriel Arend van Spriel <arend.vanspriel@broadcom.com> wrote: > The function cfg80211_set_channel() is an static function in brcmfmac > but the name is misleading. Hence rename it with 'brcmf' prefix. Also > changing the parameters to avoid additional conversions. > > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Patch applied to wireless-next.git, thanks. 5fac18583a00 wifi: brcmfmac: change cfg80211_set_channel() name and signature -- https://patchwork.kernel.org/project/linux-wireless/patch/20230103124117.271988-4-arend.vanspriel@broadcom.com/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-02-13 16:55 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-03 12:41 [PATCH for-6.2 0/3] wifi: brcmfmac: regression fixes Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 1/3] wifi: brcmfmac: avoid handling disabled channels for survey dump Arend van Spriel 2023-01-03 19:15 ` Stefan Wahren 2023-01-03 19:44 ` Arend van Spriel 2023-01-16 11:26 ` Kalle Valo 2023-01-03 12:41 ` [PATCH for-6.2 2/3] wifi: brcmfmac: avoid NULL-deref in survey dump for 2G only device Arend van Spriel 2023-01-03 13:36 ` Arend van Spriel 2023-01-03 12:41 ` [PATCH for-6.2 3/3] wifi: brcmfmac: change cfg80211_set_channel() name and signature Arend van Spriel 2023-01-09 15:50 ` Kalle Valo 2023-01-09 17:38 ` Arend Van Spriel 2023-02-13 16:54 ` Kalle Valo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.