wifi: ath11k: adjust unlock sequence in ath11k_update_stats_event()
authorBaochen Qiang <quic_bqiang@quicinc.com>
Thu, 20 Feb 2025 08:24:46 +0000 (16:24 +0800)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Sat, 7 Jun 2025 14:36:03 +0000 (07:36 -0700)
Currently RCU lock and ar->data_lock are acquired in a sequence of

rcu_read_lock()
spin_lock_bh(&ar->data_lock)

but released in a sequence of

rcu_read_unlock()
spin_unlock_bh(&ar->data_lock)

Although there are no apparent issues with this, reorder them to
achieve symmetry.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250220082448.31039-6-quic_bqiang@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath11k/wmi.c

index 98811726d33bf19c47c59c54eecb4c1a50f44b68..56af2e9634f422bbbc6a317fcf02cd36357f1a73 100644 (file)
@@ -8238,8 +8238,8 @@ static void ath11k_update_stats_event(struct ath11k_base *ab, struct sk_buff *sk
 
 complete:
        complete(&ar->fw_stats_complete);
-       rcu_read_unlock();
        spin_unlock_bh(&ar->data_lock);
+       rcu_read_unlock();
 
        /* Since the stats's pdev, vdev and beacon list are spliced and reinitialised
         * at this point, no need to free the individual list.