wifi: cw1200: remove RCU STA pointer handling in TX
authorJohannes Berg <johannes.berg@intel.com>
Sun, 4 Sep 2022 19:29:10 +0000 (21:29 +0200)
committerKalle Valo <kvalo@kernel.org>
Wed, 7 Sep 2022 08:02:59 +0000 (11:02 +0300)
We can call this in one of two ways: through mac80211, where
we're already in an RCU read-side critical section, or from
some other code in the driver where this pointer can only be
NULL. In any case, we get a 'free' already protected pointer
to the sta through info->control.sta, so we can use it on
the stack without any further protection.

Remove the rcu_dereference() and critical section.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220904212910.e5bc20dd17bf.Ib570ff7fde33c2b6eddef493a3541fa04eb47181@changeid
drivers/net/wireless/st/cw1200/txrx.c

index fde21fca6c5eae684010e02269bf3ff6c99b0f24..ab19e0403dc2b10b2f12ea57f8326293f4a27912 100644 (file)
@@ -762,8 +762,7 @@ void cw1200_tx(struct ieee80211_hw *dev,
        if (ret)
                goto drop;
 
-       rcu_read_lock();
-       sta = rcu_dereference(t.sta);
+       sta = t.sta;
 
        spin_lock_bh(&priv->ps_state_lock);
        {
@@ -776,8 +775,6 @@ void cw1200_tx(struct ieee80211_hw *dev,
        if (tid_update && sta)
                ieee80211_sta_set_buffered(sta, t.txpriv.tid, true);
 
-       rcu_read_unlock();
-
        cw1200_bh_wakeup(priv);
 
        return;