UPSTREAM: wifi: nl80211: hold wdev mutex in add/mod/del link station
Since we deal with links, and that requires looking at wdev links, we should hold the wdev mutex for driver convenience. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Bug: 253289327 Change-Id: I8fe86027eb3a9c4fa32832114c76eb1146088938 (cherry picked from commit 858fd1880ba5fffaacc9bac5c3cd9b0952819208) Signed-off-by: Kiran Kumar Lokere <quic_klokere@quicinc.com>
This commit is contained in:
@@ -15845,9 +15845,14 @@ nl80211_add_mod_link_station(struct sk_buff *skb, struct genl_info *info,
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
wdev_lock(dev->ieee80211_ptr);
|
||||
if (add)
|
||||
return rdev_add_link_station(rdev, dev, ¶ms);
|
||||
return rdev_mod_link_station(rdev, dev, ¶ms);
|
||||
err = rdev_add_link_station(rdev, dev, ¶ms);
|
||||
else
|
||||
err = rdev_mod_link_station(rdev, dev, ¶ms);
|
||||
wdev_unlock(dev->ieee80211_ptr);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -15868,6 +15873,7 @@ nl80211_remove_link_station(struct sk_buff *skb, struct genl_info *info)
|
||||
struct link_station_del_parameters params = {};
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
struct net_device *dev = info->user_ptr[1];
|
||||
int ret;
|
||||
|
||||
if (!rdev->ops->del_link_station)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -15879,7 +15885,11 @@ nl80211_remove_link_station(struct sk_buff *skb, struct genl_info *info)
|
||||
params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]);
|
||||
params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]);
|
||||
|
||||
return rdev_del_link_station(rdev, dev, ¶ms);
|
||||
wdev_lock(dev->ieee80211_ptr);
|
||||
ret = rdev_del_link_station(rdev, dev, ¶ms);
|
||||
wdev_unlock(dev->ieee80211_ptr);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define NL80211_FLAG_NEED_WIPHY 0x01
|
||||
|
||||
Reference in New Issue
Block a user