wifi: mac80211: add RCU _check() link access variants
authorJohannes Berg <johannes.berg@intel.com>
Tue, 27 Sep 2022 09:39:23 +0000 (11:39 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 7 Oct 2022 13:24:13 +0000 (15:24 +0200)
We might sometimes need to use RCU and locking in the same code
path, so add the two variants link_conf_dereference_check() and
link_sta_dereference_check().

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h

index c413050ec8ddb0aa5ce1762fa4de86e33a8b4463..cda4584dfd51c48c71da99495be9a5641ed4e055 100644 (file)
@@ -1915,6 +1915,10 @@ static inline bool lockdep_vif_mutex_held(struct ieee80211_vif *vif)
        rcu_dereference_protected((vif)->link_conf[link_id],    \
                                  lockdep_vif_mutex_held(vif))
 
+#define link_conf_dereference_check(vif, link_id)              \
+       rcu_dereference_check((vif)->link_conf[link_id],        \
+                             lockdep_vif_mutex_held(vif))
+
 /**
  * enum ieee80211_key_flags - key flags
  *
@@ -2311,6 +2315,10 @@ static inline bool lockdep_sta_mutex_held(struct ieee80211_sta *pubsta)
        rcu_dereference_protected((sta)->link[link_id],         \
                                  lockdep_sta_mutex_held(sta))
 
+#define link_sta_dereference_check(sta, link_id)               \
+       rcu_dereference_check((sta)->link[link_id],             \
+                             lockdep_sta_mutex_held(sta))
+
 #define for_each_sta_active_link(vif, sta, link_sta, link_id)                  \
        for (link_id = 0; link_id < ARRAY_SIZE((sta)->link); link_id++)         \
                if ((!(vif)->active_links ||                                    \