diff options
author | Johannes Berg <johannes.berg@intel.com> | 2023-08-28 14:59:32 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2023-09-11 12:27:19 +0300 |
commit | 7483a2147aebea537e1447489109eeb5e771aff5 (patch) | |
tree | 8033518df6e55f2b38979bffd3e4bb3f61f6498e /net/wireless/core.h | |
parent | e911a8192e29d7326e9062947ecd753c8572eb09 (diff) | |
download | linux-7483a2147aebea537e1447489109eeb5e771aff5.tar.xz |
wifi: cfg80211: check RTNL when iterating devices
Add a new "for_each_rdev()" macro and check that we
hold the RTNL when calling it.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/core.h')
-rw-r--r-- | net/wireless/core.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/wireless/core.h b/net/wireless/core.h index 507d184b8b40..d4976550e7f6 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h @@ -160,6 +160,16 @@ extern struct workqueue_struct *cfg80211_wq; extern struct list_head cfg80211_rdev_list; extern int cfg80211_rdev_list_generation; +/* This is constructed like this so it can be used in if/else */ +static inline int for_each_rdev_check_rtnl(void) +{ + ASSERT_RTNL(); + return 0; +} +#define for_each_rdev(rdev) \ + if (for_each_rdev_check_rtnl()) {} else \ + list_for_each_entry(rdev, &cfg80211_rdev_list, list) + struct cfg80211_internal_bss { struct list_head list; struct list_head hidden_list; |