Patch "wifi: ath12k: avoid array overflow of hw mode for preferred_hw_mode" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    wifi: ath12k: avoid array overflow of hw mode for preferred_hw_mode

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     wifi-ath12k-avoid-array-overflow-of-hw-mode-for-pref.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 24367c49d9dc0f7e6f89bec54df2672b10a8f9d5
Author: Wen Gong <quic_wgong@xxxxxxxxxxx>
Date:   Fri Jul 14 03:24:05 2023 -0400

    wifi: ath12k: avoid array overflow of hw mode for preferred_hw_mode
    
    [ Upstream commit 1e9b1363e2de1552ee4e3d74ac8bb43a194f1cb4 ]
    
    Currently ath12k define WMI_HOST_HW_MODE_DBS_OR_SBS=5 as max hw mode
    for enum wmi_host_hw_mode_config_type, it is also same for the array
    ath12k_hw_mode_pri_map.
    
    When tested with new version firmware/board data which support new
    hw mode eMLSR mode with hw mode value 8, it leads overflow usage for
    array ath12k_hw_mode_pri_map in function ath12k_wmi_hw_mode_caps(),
    and then lead preferred_hw_mode changed to 8, and finally function
    ath12k_pull_mac_phy_cap_svc_ready_ext() select the capability of hw
    mode 8, but the capability of eMLSR mode report from firmware does
    not support 2.4 GHz band for WCN7850, so finally 2.4 GHz band is
    disabled.
    
    Skip the hw mode which exceeds WMI_HOST_HW_MODE_MAX in function
    ath12k_wmi_hw_mode_caps() helps to avoid array overflow, then the 2.4
    GHz band will not be disabled.
    
    This is to keep compatibility with newer version firmware/board data
    files, this change is still needed after ath12k add eMLSR hw mode 8 in
    array ath12k_hw_mode_pri_map and enum wmi_host_hw_mode_config_type,
    because more hw mode maybe added in next firmware/board data version
    e.g hw mode 9, then it will also lead new array overflow without this
    change.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
    
    Signed-off-by: Wen Gong <quic_wgong@xxxxxxxxxxx>
    Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230714072405.28705-1-quic_wgong@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
index 4928e4e916603..4f378f06e946e 100644
--- a/drivers/net/wireless/ath/ath12k/wmi.c
+++ b/drivers/net/wireless/ath/ath12k/wmi.c
@@ -3704,6 +3704,10 @@ static int ath12k_wmi_hw_mode_caps(struct ath12k_base *soc,
 	for (i = 0 ; i < svc_rdy_ext->n_hw_mode_caps; i++) {
 		hw_mode_caps = &svc_rdy_ext->hw_mode_caps[i];
 		mode = le32_to_cpu(hw_mode_caps->hw_mode_id);
+
+		if (mode >= WMI_HOST_HW_MODE_MAX)
+			continue;
+
 		pref = soc->wmi_ab.preferred_hw_mode;
 
 		if (ath12k_hw_mode_pri_map[mode] < ath12k_hw_mode_pri_map[pref]) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux