wext: call cfg80211_set_encryption() with wiphy lock held
authorJohannes Berg <johannes.berg@intel.com>
Thu, 28 Jan 2021 17:35:27 +0000 (18:35 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 28 Jan 2021 18:10:57 +0000 (19:10 +0100)
Similar to the previous commit, we need to hold the wiphy lock
here. There's a second instance that is correct already, fix
this one as well.

Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver")
Link: https://lore.kernel.org/r/20210128183454.ea2f086465ed.I891d3bb44f068e6d97c160005010f052f28ab6e5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/wext-compat.c

index 0c6ea621249633397e06fce2280bdfe9ccbe6545..a8320dc59af7e12fc4661dc82d871a9969b8e950 100644 (file)
@@ -655,6 +655,7 @@ static int cfg80211_wext_siwencodeext(struct net_device *dev,
        bool remove = false;
        struct key_params params;
        u32 cipher;
+       int ret;
 
        if (wdev->iftype != NL80211_IFTYPE_STATION &&
            wdev->iftype != NL80211_IFTYPE_ADHOC)
@@ -726,12 +727,16 @@ static int cfg80211_wext_siwencodeext(struct net_device *dev,
                params.seq_len = 6;
        }
 
-       return cfg80211_set_encryption(
+       wiphy_lock(wdev->wiphy);
+       ret = cfg80211_set_encryption(
                        rdev, dev,
                        !(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY),
                        addr, remove,
                        ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY,
                        idx, &params);
+       wiphy_unlock(wdev->wiphy);
+
+       return ret;
 }
 
 static int cfg80211_wext_giwencode(struct net_device *dev,