mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-04-25 00:01:15 +02:00
pentoo-sources: rtnl fixes
This commit is contained in:
parent
716e16ad97
commit
ce31f38f3b
2 changed files with 98 additions and 0 deletions
|
|
@ -0,0 +1,97 @@
|
|||
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
|
||||
index e5e9d889f00f..3b45a9593e71 100644
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -3220,7 +3220,6 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
||||
wdev = netdev->ieee80211_ptr;
|
||||
|
||||
wiphy_lock(&rdev->wiphy);
|
||||
- rtnl_unlock();
|
||||
|
||||
/*
|
||||
* end workaround code, by now the rdev is available
|
||||
@@ -3230,6 +3229,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
||||
if (info->attrs[NL80211_ATTR_WIPHY_NAME])
|
||||
result = cfg80211_dev_rename(
|
||||
rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME]));
|
||||
+ rtnl_unlock();
|
||||
|
||||
if (result)
|
||||
goto out;
|
||||
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
|
||||
index 2e35cb78221e..0c6ea6212496 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);
|
||||
|
||||
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
|
||||
index 0c6ea6212496..a8320dc59af7 100644
|
||||
--- a/net/wireless/wext-compat.c
|
||||
+++ b/net/wireless/wext-compat.c
|
||||
@@ -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, ¶ms);
|
||||
+ wiphy_unlock(wdev->wiphy);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static int cfg80211_wext_giwencode(struct net_device *dev,
|
||||
diff --git a/net/wireless/core.c b/net/wireless/core.c
|
||||
index 200cd9f5fd5f..18f9a5c214b5 100644
|
||||
--- a/net/wireless/core.c
|
||||
+++ b/net/wireless/core.c
|
||||
@@ -334,6 +334,7 @@ void cfg80211_destroy_ifaces(struct cfg80211_registered_device *rdev)
|
||||
struct wireless_dev *wdev, *tmp;
|
||||
|
||||
ASSERT_RTNL();
|
||||
+ lockdep_assert_wiphy(&rdev->wiphy);
|
||||
|
||||
list_for_each_entry_safe(wdev, tmp, &rdev->wiphy.wdev_list, list) {
|
||||
if (wdev->nl_owner_dead)
|
||||
@@ -349,7 +350,9 @@ static void cfg80211_destroy_iface_wk(struct work_struct *work)
|
||||
destroy_work);
|
||||
|
||||
rtnl_lock();
|
||||
+ wiphy_lock(&rdev->wiphy);
|
||||
cfg80211_destroy_ifaces(rdev);
|
||||
+ wiphy_unlock(&rdev->wiphy);
|
||||
rtnl_unlock();
|
||||
}
|
||||
|
||||
|
|
@ -35,6 +35,7 @@ src_unpack() {
|
|||
#backported from 5.12 by johill for us https://p.sipsolutions.net/f457f6b7174c5fa7.txt
|
||||
eapply -s "${FILESDIR}/4008_cfg80211-change-netdev-rtnl-lock.patch"
|
||||
eapply -s "${FILESDIR}/4009_virt_wifi-fix-dealock-on-rtnl.patch"
|
||||
eapply -s "${FILESDIR}/4010_rtnl-locking-fixes.patch"
|
||||
#experimental penpatches
|
||||
#if use pentoo-experimental; then
|
||||
#eapply -s "${FILESDIR}/4597-huge-usb-exp.patch"
|
||||
|
|
|
|||
Loading…
Reference in a new issue