projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4484de2
)
wifi: mac80211: avoid lockdep checking when removing deflink
author
Benjamin Berg
<benjamin.berg@intel.com>
Mon, 19 Jun 2023 13:26:50 +0000
(16:26 +0300)
committer
Johannes Berg
<johannes.berg@intel.com>
Wed, 21 Jun 2023 12:01:28 +0000
(14:01 +0200)
struct sta_info may be removed without holding sta_mtx if it has not
yet been inserted. To support this, only assert that the lock is held
for links other than the deflink.
This fixes lockdep issues that may be triggered in error cases.
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link:
https://lore.kernel.org/r/20230619161906.cdd81377dea0.If5a6734b4b85608a2275a09b4f99b5564d82997f@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/sta_info.c
patch
|
blob
|
history
diff --git
a/net/mac80211/sta_info.c
b/net/mac80211/sta_info.c
index
731b832
..
7751f8b
100644
(file)
--- a/
net/mac80211/sta_info.c
+++ b/
net/mac80211/sta_info.c
@@
-355,8
+355,9
@@
static void sta_remove_link(struct sta_info *sta, unsigned int link_id,
struct sta_link_alloc *alloc = NULL;
struct link_sta_info *link_sta;
- link_sta = rcu_dereference_protected(sta->link[link_id],
- lockdep_is_held(&sta->local->sta_mtx));
+ link_sta = rcu_access_pointer(sta->link[link_id]);
+ if (link_sta != &sta->deflink)
+ lockdep_assert_held(&sta->local->sta_mtx);
if (WARN_ON(!link_sta))
return;