developer | 1a17367 | 2023-12-21 14:49:33 +0800 | [diff] [blame^] | 1 | From 5e5c03f7f7fe349d4d835bd6809bc40b32a9ec8a Mon Sep 17 00:00:00 2001 |
developer | 70180b0 | 2023-11-14 17:01:47 +0800 | [diff] [blame] | 2 | From: MeiChia Chiu <meichia.chiu@mediatek.com> |
| 3 | Date: Thu, 26 Oct 2023 21:11:05 +0800 |
developer | 1a17367 | 2023-12-21 14:49:33 +0800 | [diff] [blame^] | 4 | Subject: [PATCH 08/76] wifi: mt76: mt7915: Fixed null pointer dereference |
developer | 70180b0 | 2023-11-14 17:01:47 +0800 | [diff] [blame] | 5 | issue |
| 6 | |
| 7 | Without this patch, when the station is still in Authentication stage and |
| 8 | sends a "Notify bandwidth change action frame" to AP at the same time, |
| 9 | there will be a race condition that causes a crash to occur because the AP |
| 10 | access "msta->vif" that has not been fully initialized. |
| 11 | |
| 12 | Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com> |
| 13 | Signed-off-by: Money Wang <money.wang@mediatek.com> |
| 14 | Signed-off-by: MeiChia Chiu <meichia.chiu@mediatek.com> |
| 15 | --- |
| 16 | mt7915/main.c | 7 +++++++ |
| 17 | 1 file changed, 7 insertions(+) |
| 18 | |
| 19 | diff --git a/mt7915/main.c b/mt7915/main.c |
developer | 1a17367 | 2023-12-21 14:49:33 +0800 | [diff] [blame^] | 20 | index 4e0216e..3cf459d 100644 |
developer | 70180b0 | 2023-11-14 17:01:47 +0800 | [diff] [blame] | 21 | --- a/mt7915/main.c |
| 22 | +++ b/mt7915/main.c |
developer | 1a17367 | 2023-12-21 14:49:33 +0800 | [diff] [blame^] | 23 | @@ -1166,9 +1166,16 @@ static void mt7915_sta_rc_update(struct ieee80211_hw *hw, |
developer | 70180b0 | 2023-11-14 17:01:47 +0800 | [diff] [blame] | 24 | struct ieee80211_sta *sta, |
| 25 | u32 changed) |
| 26 | { |
| 27 | + struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv; |
| 28 | struct mt7915_phy *phy = mt7915_hw_phy(hw); |
| 29 | struct mt7915_dev *dev = phy->dev; |
| 30 | |
| 31 | + if (!msta->vif) { |
| 32 | + dev_warn(dev->mt76.dev, "Un-initialized STA %pM wcid %d in rc_work\n", |
| 33 | + sta->addr, msta->wcid.idx); |
| 34 | + return; |
| 35 | + } |
| 36 | + |
| 37 | mt7915_sta_rc_work(&changed, sta); |
| 38 | ieee80211_queue_work(hw, &dev->rc_work); |
| 39 | } |
| 40 | -- |
developer | 1a17367 | 2023-12-21 14:49:33 +0800 | [diff] [blame^] | 41 | 2.18.0 |
developer | 70180b0 | 2023-11-14 17:01:47 +0800 | [diff] [blame] | 42 | |