Commit df8e1af2 authored by Johannes Berg's avatar Johannes Berg Committed by Kalle Valo

wifi: cw1200: remove RCU STA pointer handling in TX

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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220904212910.e5bc20dd17bf.Ib570ff7fde33c2b6eddef493a3541fa04eb47181@changeid
parent fbe7e185
...@@ -762,8 +762,7 @@ void cw1200_tx(struct ieee80211_hw *dev, ...@@ -762,8 +762,7 @@ void cw1200_tx(struct ieee80211_hw *dev,
if (ret) if (ret)
goto drop; goto drop;
rcu_read_lock(); sta = t.sta;
sta = rcu_dereference(t.sta);
spin_lock_bh(&priv->ps_state_lock); spin_lock_bh(&priv->ps_state_lock);
{ {
...@@ -776,8 +775,6 @@ void cw1200_tx(struct ieee80211_hw *dev, ...@@ -776,8 +775,6 @@ void cw1200_tx(struct ieee80211_hw *dev,
if (tid_update && sta) if (tid_update && sta)
ieee80211_sta_set_buffered(sta, t.txpriv.tid, true); ieee80211_sta_set_buffered(sta, t.txpriv.tid, true);
rcu_read_unlock();
cw1200_bh_wakeup(priv); cw1200_bh_wakeup(priv);
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment