mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
wifi: mac80211: take lock before setting vif links
[ Upstream commit15846f95ab] ieee80211_vif_set_links requires the sdata->local->mtx lock to be held. Add the appropriate locking around the calls in both the link add and remove handlers. This causes a warning when e.g. ieee80211_link_release_channel is called via ieee80211_link_stop from ieee80211_vif_update_links. Fixes:0d8c4a3c86("wifi: mac80211: implement add/del interface link callbacks") Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230608163202.fa0c6597fdad.I83dd70359f6cda30f86df8418d929c2064cf4995@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
170ceadf4a
commit
e83bc93886
@@ -4732,11 +4732,16 @@ static int ieee80211_add_intf_link(struct wiphy *wiphy,
|
|||||||
unsigned int link_id)
|
unsigned int link_id)
|
||||||
{
|
{
|
||||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||||
|
int res;
|
||||||
|
|
||||||
if (wdev->use_4addr)
|
if (wdev->use_4addr)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
return ieee80211_vif_set_links(sdata, wdev->valid_links);
|
mutex_lock(&sdata->local->mtx);
|
||||||
|
res = ieee80211_vif_set_links(sdata, wdev->valid_links);
|
||||||
|
mutex_unlock(&sdata->local->mtx);
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ieee80211_del_intf_link(struct wiphy *wiphy,
|
static void ieee80211_del_intf_link(struct wiphy *wiphy,
|
||||||
@@ -4745,7 +4750,9 @@ static void ieee80211_del_intf_link(struct wiphy *wiphy,
|
|||||||
{
|
{
|
||||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
||||||
|
|
||||||
|
mutex_lock(&sdata->local->mtx);
|
||||||
ieee80211_vif_set_links(sdata, wdev->valid_links);
|
ieee80211_vif_set_links(sdata, wdev->valid_links);
|
||||||
|
mutex_unlock(&sdata->local->mtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sta_add_link_station(struct ieee80211_local *local,
|
static int sta_add_link_station(struct ieee80211_local *local,
|
||||||
|
|||||||
Reference in New Issue
Block a user