blob: 576cf69a767e24238bbff309fd7e9bcf78ec2bbd [file] [log] [blame]
developer05f3b2b2024-08-19 19:17:34 +08001From 65092f531e1319ed6ddb25e982393eddccb781b5 Mon Sep 17 00:00:00 2001
developer1a173672023-12-21 14:49:33 +08002From: Peter Chiu <chui-hao.chiu@mediatek.com>
developer753619c2024-02-22 13:42:45 +08003Date: Mon, 29 Jan 2024 15:33:24 +0800
developera20cdc22024-05-31 18:57:31 +08004Subject: [PATCH 12/21] wifi: mt76: add sanity check to prevent kernel crash
developer1a173672023-12-21 14:49:33 +08005
6wcid may not be initialized when mac80211 calls mt76.tx and it would lead to
7kernel crash.
8
9Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
10---
11 tx.c | 8 ++++++++
12 1 file changed, 8 insertions(+)
13
14diff --git a/tx.c b/tx.c
developer05f3b2b2024-08-19 19:17:34 +080015index 5cf6edee..ab42f69b 100644
developer1a173672023-12-21 14:49:33 +080016--- a/tx.c
17+++ b/tx.c
18@@ -345,6 +345,14 @@ mt76_tx(struct mt76_phy *phy, struct ieee80211_sta *sta,
19
20 info->hw_queue |= FIELD_PREP(MT_TX_HW_QUEUE_PHY, phy->band_idx);
21
22+ if (!wcid->tx_pending.prev || !wcid->tx_pending.next) {
23+ dev_warn(phy->dev->dev, "Un-initialized STA %pM wcid %d in mt76_tx\n",
24+ sta->addr, wcid->idx);
25+
26+ ieee80211_free_txskb(phy->hw, skb);
27+ return;
28+ }
29+
30 spin_lock_bh(&wcid->tx_pending.lock);
31 __skb_queue_tail(&wcid->tx_pending, skb);
32 spin_unlock_bh(&wcid->tx_pending.lock);
33--
342.18.0
35