mirror of
https://github.com/armbian/build.git
synced 2025-08-12 14:16:57 +02:00
* sunxi-5.19: Initial state for megous patches * Add the ability to do 5.19 * Move to 5.19 - tested both - removed broken Opi Zero xradio driver https://armbian.atlassian.net/browse/AR-1280 * sunxi-5.19: fix tag for switch * sunxi-5.19: Initial state for armbian patches * sunxi-5.19: Add armbian patches to series.conf file * sanxi-5.19: Add other 2 patches * sunxi-5.19: Limit to use the 'wireless/xradio' module Limit the kernel version to less than 5.19 to use the 'wireless/xradio' module Co-authored-by: Igor Pecovnik <igor.pecovnik@gmail.com>
61 lines
2.4 KiB
Diff
61 lines
2.4 KiB
Diff
From b59b57318bd96cb0b0bb1fc5ec1fad6f0bc2dc6c Mon Sep 17 00:00:00 2001
|
|
From: Po Hao Huang <phhuang@realtek.com>
|
|
Date: Fri, 20 May 2022 15:17:27 +0800
|
|
Subject: [PATCH 390/417] rtw89: fix null vif pointer when hw_scan fails
|
|
|
|
Add this check to avoid crash by dereferencing a null pointer. When hwscan
|
|
fails due to no memory or dma failure, the scan flag in ieee80211_local is
|
|
cleared. So mac80211 determine that it's not hw_scan then calls
|
|
sw_scan_complete() with null vif, which is also freed during the fail.
|
|
|
|
Signed-off-by: Po Hao Huang <phhuang@realtek.com>
|
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
|
Link: https://lore.kernel.org/r/20220520071731.38563-3-pkshih@realtek.com
|
|
---
|
|
drivers/net/wireless/realtek/rtw89/core.c | 5 ++++-
|
|
drivers/net/wireless/realtek/rtw89/fw.c | 4 ++--
|
|
2 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
|
index e24e133a9..958fe2787 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
|
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
|
@@ -2875,7 +2875,10 @@ void rtw89_core_scan_start(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
|
|
void rtw89_core_scan_complete(struct rtw89_dev *rtwdev,
|
|
struct ieee80211_vif *vif, bool hw_scan)
|
|
{
|
|
- struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
|
+ struct rtw89_vif *rtwvif = vif ? (struct rtw89_vif *)vif->drv_priv : NULL;
|
|
+
|
|
+ if (!rtwvif)
|
|
+ return;
|
|
|
|
ether_addr_copy(rtwvif->mac_addr, vif->addr);
|
|
rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
|
|
index cd5047c0b..92594c65a 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/fw.c
|
|
+++ b/drivers/net/wireless/realtek/rtw89/fw.c
|
|
@@ -2262,7 +2262,7 @@ static int rtw89_hw_scan_add_chan_list(struct rtw89_dev *rtwdev,
|
|
list_add_tail(&ch_info->list, &chan_list);
|
|
off_chan_time += ch_info->period;
|
|
}
|
|
- rtw89_fw_h2c_scan_list_offload(rtwdev, list_len, &chan_list);
|
|
+ ret = rtw89_fw_h2c_scan_list_offload(rtwdev, list_len, &chan_list);
|
|
|
|
out:
|
|
list_for_each_entry_safe(ch_info, tmp, &chan_list, list) {
|
|
@@ -2373,7 +2373,7 @@ int rtw89_hw_scan_offload(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif,
|
|
if (ret)
|
|
goto out;
|
|
}
|
|
- rtw89_fw_h2c_scan_offload(rtwdev, &opt, rtwvif);
|
|
+ ret = rtw89_fw_h2c_scan_offload(rtwdev, &opt, rtwvif);
|
|
out:
|
|
return ret;
|
|
}
|
|
--
|
|
2.35.3
|
|
|