]> exis.tech > repos - linux.git/blobdiff - net/mac80211/sta_info.c
Merge tag 'hwmon-for-v7.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groec...
[linux.git] / net / mac80211 / sta_info.c
index 02b587ff850461eab8c8e51b9a0ef200eb691dc2..22eba0e6e54c5b1c7fe67f4ce27feecd9d19d8b2 100644 (file)
@@ -355,6 +355,15 @@ static void sta_info_free_link(struct link_sta_info *link_sta)
        free_percpu(link_sta->pcpu_rx_stats);
 }
 
+static void sta_link_free_rcu(struct rcu_head *head)
+{
+       struct sta_link_alloc *alloc =
+               container_of(head, struct sta_link_alloc, rcu_head);
+
+       sta_info_free_link(&alloc->info);
+       kfree(alloc);
+}
+
 static void sta_accumulate_removed_link_stats(struct sta_info *sta, int link_id)
 {
        struct link_sta_info *link_sta = wiphy_dereference(sta->local->hw.wiphy,
@@ -439,10 +448,8 @@ static void sta_remove_link(struct sta_info *sta, unsigned int link_id,
 
        RCU_INIT_POINTER(sta->link[link_id], NULL);
        RCU_INIT_POINTER(sta->sta.link[link_id], NULL);
-       if (alloc) {
-               sta_info_free_link(&alloc->info);
-               kfree_rcu(alloc, rcu_head);
-       }
+       if (alloc)
+               call_rcu(&alloc->rcu_head, sta_link_free_rcu);
 
        ieee80211_sta_recalc_aggregates(&sta->sta);
 }