Message ID | 20220805135259.4126630-1-quic_vjakkam@quicinc.com (mailing list archive) |
---|---|
State | Accepted |
Commit | baa56dfe2cdad12edb2625b2d454e205943c3402 |
Delegated to: | Kalle Valo |
Headers | show |
Series | wifi: cfg80211: Fix validating BSS pointers in __cfg80211_connect_result | expand |
Veerendranath Jakkam <quic_vjakkam@quicinc.com> wrote: > Driver's SME is allowed to fill either BSSID or BSS pointers in struct > cfg80211_connect_resp_params when indicating connect response but a > check in __cfg80211_connect_result() is giving unnecessary warning when > driver's SME fills only BSSID pointer and not BSS pointer in struct > cfg80211_connect_resp_params. > > In case of mac80211 with auth/assoc path, it is always expected to fill > BSS pointers in struct cfg80211_connect_resp_params when calling > __cfg80211_connect_result() since cfg80211 must have hold BSS pointers > in cfg80211_mlme_assoc(). > > So, skip the check for the drivers which support cfg80211 connect > callback, for example with brcmfmac is one such driver which had the > warning: > > WARNING: CPU: 5 PID: 514 at net/wireless/sme.c:786 __cfg80211_connect_result+0x2fc/0x5c0 [cfg80211] > > Reported-by: Linus Torvalds <torvalds@linux-foundation.org> > Fixes: efbabc116500 ("cfg80211: Indicate MLO connection info in connect and roam callbacks") > Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com> > [kvalo@kernel.org: add more info to the commit log] Patch applied to wireless.git, thanks. baa56dfe2cda wifi: cfg80211: Fix validating BSS pointers in __cfg80211_connect_result
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 62c773cf1b8d..27fb2a0c4052 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -782,9 +782,11 @@ void __cfg80211_connect_result(struct net_device *dev, #endif if (cr->status == WLAN_STATUS_SUCCESS) { - for_each_valid_link(cr, link) { - if (WARN_ON_ONCE(!cr->links[link].bss)) - break; + if (!wiphy_to_rdev(wdev->wiphy)->ops->connect) { + for_each_valid_link(cr, link) { + if (WARN_ON_ONCE(!cr->links[link].bss)) + break; + } } for_each_valid_link(cr, link) {
Driver's SME is allowed to fill either BSSID or BSS pointers in struct cfg80211_connect_resp_params when indicating connect response but a check in __cfg80211_connect_result() is giving unnecessary warning when driver's SME fills only BSSID pointer and not BSS pointer in struct cfg80211_connect_resp_params. In case of mac80211 with auth/assoc path, it is always expected to fill BSS pointers in struct cfg80211_connect_resp_params when calling __cfg80211_connect_result() since cfg80211 must have hold BSS pointers in cfg80211_mlme_assoc(). So, skip the check for the drivers which support cfg80211 connect callback. Fixes: efbabc116500 ("cfg80211: Indicate MLO connection info in connect and roam callbacks") Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com> --- net/wireless/sme.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)