diff options
author | Johannes Berg <johannes.berg@intel.com> | 2023-05-13 17:37:39 +0200 |
---|---|---|
committer | iwlwifi publisher <> | 2023-11-14 11:29:36 +0000 |
commit | a3d4f461463f846466ab8ddd3da39d9e87cb23f4 (patch) | |
tree | 8de0367cb6ef39b5989eb85a838a97d63ecfc883 | |
parent | e35935a248e4156cd509667edb54632ebd319fdd (diff) | |
download | backport-iwlwifi-release/core80.tar.gz |
wifi: cfg80211: hold wiphy lock in auto-disconnectrelease/core80
Most code paths in cfg80211 already hold the wiphy lock,
mostly by virtue of being called from nl80211, so make
the auto-disconnect worker also hold it, aligning the
locking promises between different parts of cfg80211.
type=feature
ticket=jira:WIFI-306169
Change-Id: I3fd658cf56b9ac76d780799aa1f7c5ed2bc45ad5
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/55285
tested: iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
automatic-review: iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
Reviewed-by: Berg, Benjamin <benjamin.berg@intel.com>
Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/79111
PerCI-Ready: Berg, Benjamin <benjamin.berg@intel.com>
Tested-by: iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
Reviewed-by: Grumbach, Emmanuel <emmanuel.grumbach@intel.com>
x-iwlwifi-stack-dev: 940c4f215a59e35529b93aa5f74acd6615788968
-rw-r--r-- | net/wireless/core.c | 6 | ||||
-rw-r--r-- | net/wireless/sme.c | 4 | ||||
-rw-r--r-- | versions | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c index 2492242da5..548cf0363b 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -1183,10 +1183,6 @@ static void _cfg80211_unregister_wdev(struct wireless_dev *wdev, kfree_sensitive(wdev->wext.keys); wdev->wext.keys = NULL; #endif - /* only initialized if we have a netdev */ - if (wdev->netdev) - flush_work(&wdev->disconnect_wk); - cfg80211_cqm_config_free(wdev); /* @@ -1464,6 +1460,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, cfg80211_leave(rdev, wdev); cfg80211_remove_links(wdev); wiphy_unlock(&rdev->wiphy); + /* since we just did cfg80211_leave() nothing to do there */ + cancel_work_sync(&wdev->disconnect_wk); break; case NETDEV_DOWN: wiphy_lock(&rdev->wiphy); diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 92cc3d9703..92c146523e 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -5,7 +5,7 @@ * (for nl80211's connect() and wext) * * Copyright 2009 Johannes Berg <johannes@sipsolutions.net> - * Copyright (C) 2009, 2020, 2022 Intel Corporation. All rights reserved. + * Copyright (C) 2009, 2020, 2022-2023 Intel Corporation. All rights reserved. * Copyright 2017 Intel Deutschland GmbH */ @@ -1537,6 +1537,7 @@ void cfg80211_autodisconnect_wk(struct work_struct *work) container_of(work, struct wireless_dev, disconnect_wk); struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); + wiphy_lock(wdev->wiphy); wdev_lock(wdev); if (wdev->conn_owner_nlportid) { @@ -1575,4 +1576,5 @@ void cfg80211_autodisconnect_wk(struct work_struct *work) } wdev_unlock(wdev); + wiphy_unlock(wdev->wiphy); } @@ -2,5 +2,5 @@ BACKPORTS_VERSION="(see git)" BACKPORTED_KERNEL_VERSION="(see git)" BACKPORTED_KERNEL_NAME="iwlwifi" BACKPORTS_BUILD_TSTAMP=__DATE__ \" \" __TIME__ -BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:release/core80:11219:6a615800" +BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:release/core80:11220:940c4f21" BACKPORTS_BRANCH_TSTAMP="May 14 2023 09:22:17" |