From: Johannes Berg Date: Thu, 28 Jan 2021 17:35:26 +0000 (+0100) Subject: wext: call cfg80211_change_iface() with wiphy lock held X-Git-Tag: v5.15~1802^2~178^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bae173563cbf469533d0c38534b874d4a2df0c85;p=platform%2Fkernel%2Flinux-starfive.git wext: call cfg80211_change_iface() with wiphy lock held This is needed now that all the driver callbacks are protected by the wiphy lock rather than (just) the RTNL. Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver") Reported-by: syzbot+d2d412349f88521938aa@syzkaller.appspotmail.com Link: https://lore.kernel.org/r/20210128183454.e81bc6789b4b.I5deb8b6bfdc8b4ea7696cb2447ee6c58c7ce9a4e@changeid Signed-off-by: Johannes Berg --- diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 2e35cb7..0c6ea62 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c @@ -39,6 +39,7 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info, struct cfg80211_registered_device *rdev; struct vif_params vifparams; enum nl80211_iftype type; + int ret; rdev = wiphy_to_rdev(wdev->wiphy); @@ -61,7 +62,11 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info, memset(&vifparams, 0, sizeof(vifparams)); - return cfg80211_change_iface(rdev, dev, type, &vifparams); + wiphy_lock(wdev->wiphy); + ret = cfg80211_change_iface(rdev, dev, type, &vifparams); + wiphy_unlock(wdev->wiphy); + + return ret; } EXPORT_WEXT_HANDLER(cfg80211_wext_siwmode);