Skip to content

Commit e01f0f7

Browse files
committed
wifi: ath12k: Fix memory corruption during MLO multicast tx
JIRA: https://issues.redhat.com/browse/RHEL-89168 commit 6f8a27a Author: P Praneesh <praneesh.p@oss.qualcomm.com> Date: Wed Apr 2 23:27:14 2025 +0530 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: 2f50de7 ("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> Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
1 parent 7686ea0 commit e01f0f7

File tree

1 file changed

+0
-2
lines changed
  • drivers/net/wireless/ath/ath12k

1 file changed

+0
-2
lines changed

drivers/net/wireless/ath/ath12k/mac.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7429,7 +7429,6 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw,
74297429
info_flags);
74307430

74317431
skb_cb = ATH12K_SKB_CB(msdu_copied);
7432-
info = IEEE80211_SKB_CB(msdu_copied);
74337432
skb_cb->link_id = link_id;
74347433

74357434
/* For open mode, skip peer find logic */
@@ -7452,7 +7451,6 @@ static void ath12k_mac_op_tx(struct ieee80211_hw *hw,
74527451
if (key) {
74537452
skb_cb->cipher = key->cipher;
74547453
skb_cb->flags |= ATH12K_SKB_CIPHER_SET;
7455-
info->control.hw_key = key;
74567454

74577455
hdr = (struct ieee80211_hdr *)msdu_copied->data;
74587456
if (!ieee80211_has_protected(hdr->frame_control))

0 commit comments

Comments
 (0)