Message ID | 20180114180338.GA1569@light.dominikbrodowski.net (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Johannes Berg |
Headers | show |
Hi, > Fixes: 44905265bc15 ("nl80211: don't expose wdev->ssid for most interfaces") > Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net> > --- > > This patch fixes the regression I reported in the last couple of weeks for > various v4.15-rcX revisions to netdev, where a "suspicious RCU usage" > showed up in net/wireless/util.c:778. Huh. You should added linux-wireless to those reports, I simply didn't see them! > diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c > index 2b3dbcd40e46..1eecc249fb5e 100644 > --- a/net/wireless/nl80211.c > +++ b/net/wireless/nl80211.c > @@ -2618,8 +2618,10 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag > const u8 *ssid_ie; > if (!wdev->current_bss) > break; > + rcu_read_lock(); > ssid_ie = ieee80211_bss_get_ie(&wdev->current_bss->pub, > WLAN_EID_SSID); > + rcu_read_unlock(); > if (!ssid_ie) > break; > if (nla_put(msg, NL80211_ATTR_SSID, ssid_ie[1], ssid_ie + 2)) This uses the ssid_ie, so that doesn't really seem right? The protection should extend beyond the usage. johannes
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 2b3dbcd40e46..1eecc249fb5e 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -2618,8 +2618,10 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag const u8 *ssid_ie; if (!wdev->current_bss) break; + rcu_read_lock(); ssid_ie = ieee80211_bss_get_ie(&wdev->current_bss->pub, WLAN_EID_SSID); + rcu_read_unlock(); if (!ssid_ie) break; if (nla_put(msg, NL80211_ATTR_SSID, ssid_ie[1], ssid_ie + 2))
As ieee80211_bss_get_ie() derefences an RCU, it needs to be called with rcu_read_lock held. Fixes: 44905265bc15 ("nl80211: don't expose wdev->ssid for most interfaces") Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net> --- This patch fixes the regression I reported in the last couple of weeks for various v4.15-rcX revisions to netdev, where a "suspicious RCU usage" showed up in net/wireless/util.c:778.