ath10k: acquire lock to fix lockdep's warning
Lockdep warns at lockdep_assert_held(&ar->data_lock) in
ath10k_htt_rx_pn_check_replay_hl(). Acquire ar->data_lock before calling
ath10k_htt_rx_pn_check_replay_hl() to fix it.
Call trace:
ath10k_htt_rx_pn_check_replay_hl+0x118/0x134 [ath10k_core]
ath10k_htt_rx_proc_rx_ind_hl+0xd8/0x250 [ath10k_core]
ath10k_htt_t2h_msg_handler+0x148/0xf30 [ath10k_core]
ath10k_htt_htc_t2h_msg_handler+0x24/0x40 [ath10k_core]
ath10k_sdio_irq_handler+0x374/0xaa4 [ath10k_sdio]
Fixes: 130c774957
("ath10k: add PN replay protection for high latency devices")
Signed-off-by: Claire Chang <tientzu@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
54f6643bf1
commit
ef9cc0c443
|
@ -2158,6 +2158,7 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt,
|
|||
int num_mpdu_ranges;
|
||||
size_t tot_hdr_len;
|
||||
struct ieee80211_channel *ch;
|
||||
bool pn_invalid;
|
||||
|
||||
peer_id = __le16_to_cpu(rx->hdr.peer_id);
|
||||
|
||||
|
@ -2189,9 +2190,13 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt,
|
|||
goto err;
|
||||
}
|
||||
|
||||
if (check_pn_type == HTT_RX_PN_CHECK &&
|
||||
ath10k_htt_rx_pn_check_replay_hl(ar, peer, rx))
|
||||
goto err;
|
||||
if (check_pn_type == HTT_RX_PN_CHECK) {
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
pn_invalid = ath10k_htt_rx_pn_check_replay_hl(ar, peer, rx);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
if (pn_invalid)
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Strip off all headers before the MAC header before delivery to
|
||||
* mac80211
|
||||
|
|
Loading…
Reference in New Issue