blob: 46ba8c23f42300278c9e468f795c6fcc1c6bae82 [file] [log] [blame]
developerd0c89452024-10-11 16:53:27 +08001From 8fb1feae687645a1c48070f2eebc44fcb7db080d Mon Sep 17 00:00:00 2001
2From: Peter Chiu <chui-hao.chiu@mediatek.com>
3Date: Mon, 30 Oct 2023 11:06:19 +0800
4Subject: [PATCH 010/223] mtk: mt76: add sanity check to prevent kernel crash
5
6wcid may not be initialized when mac80211 calls mt76.tx and it would lead to
7kernel crash.
8
9Change-Id: I90004271c6e91620c6991195dd332780ce28380e
10Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
11---
12 tx.c | 10 +++++++++-
13 1 file changed, 9 insertions(+), 1 deletion(-)
14
15diff --git a/tx.c b/tx.c
16index 7521e739..2634c5bc 100644
17--- a/tx.c
18+++ b/tx.c
19@@ -352,8 +352,16 @@ mt76_tx(struct mt76_phy *phy, struct ieee80211_sta *sta,
20 if ((info->flags & IEEE80211_TX_CTL_TX_OFFCHAN) ||
21 (info->control.flags & IEEE80211_TX_CTRL_SCAN_TX))
22 head = &wcid->tx_offchannel;
23- else
24+ else {
25+ if (!wcid->tx_pending.prev || !wcid->tx_pending.next) {
26+ dev_warn(phy->dev->dev, "Un-initialized STA %pM wcid %d in mt76_tx\n",
27+ sta->addr, wcid->idx);
28+
29+ ieee80211_free_txskb(phy->hw, skb);
30+ return;
31+ }
32 head = &wcid->tx_pending;
33+ }
34
35 spin_lock_bh(&head->lock);
36 __skb_queue_tail(head, skb);
37--
382.45.2
39