mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
wifi: ath12k: Fix memory corruption during MLO multicast tx
The struct sk_buff's control buffer is shared by mac80211's struct
ieee80211_tx_info and ath12k's struct ath12k_skb_cb. When the driver wants
to transmit an skb, it caches all the mac80211-specific information from
struct ieee80211_tx_info, then performs a memset on the control buffer
before writing the ath12k-specific information using struct ath12k_skb_cb.
However, during multicast tx, the key is being filled into the driver data,
which overwrites some crucial members like link_id and flags in struct
ath12k_skb_cb. This causes invalid information retrieval when the driver
accesses these fields during ath12k_dp_tx(). Fix this issue by removing
the key filling logic during MLO multicast tx, as it is not used anywhere
in the tx path.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Fixes: 2f50de7256 ("wifi: ath12k: Add support for MLO Multicast handling in driver")
Signed-off-by: P Praneesh <praneesh.p@oss.qualcomm.com>
Link: https://patch.msgid.link/20250402175714.2667270-1-praneesh.p@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
This commit is contained in:
parent
75ec94db88
commit
6f8a27a584
|
|
@ -7497,7 +7497,6 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw,
|
|||
info_flags);
|
||||
|
||||
skb_cb = ATH12K_SKB_CB(msdu_copied);
|
||||
info = IEEE80211_SKB_CB(msdu_copied);
|
||||
skb_cb->link_id = link_id;
|
||||
|
||||
/* For open mode, skip peer find logic */
|
||||
|
|
@ -7520,7 +7519,6 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw,
|
|||
if (key) {
|
||||
skb_cb->cipher = key->cipher;
|
||||
skb_cb->flags |= ATH12K_SKB_CIPHER_SET;
|
||||
info->control.hw_key = key;
|
||||
|
||||
hdr = (struct ieee80211_hdr *)msdu_copied->data;
|
||||
if (!ieee80211_has_protected(hdr->frame_control))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user