2024-04-16 08:03:23

by Karthikeyan Kathirvel

[permalink] [raw]
Subject: [PATCH v2] wifi: ath12k: fix out-of-bound access of qmi_invoke_handler()

Currently, there is no terminator entry for ath12k_qmi_msg_handlers hence
facing below KASAN warning,

==================================================================
BUG: KASAN: global-out-of-bounds in qmi_invoke_handler+0xa4/0x148
Read of size 8 at addr ffffffd00a6428d8 by task kworker/u8:2/1273

CPU: 0 PID: 1273 Comm: kworker/u8:2 Not tainted 5.4.213 #0
Workqueue: qmi_msg_handler qmi_data_ready_work
Call trace:
dump_backtrace+0x0/0x20c
show_stack+0x14/0x1c
dump_stack+0xe0/0x138
print_address_description.isra.5+0x30/0x330
__kasan_report+0x16c/0x1bc
kasan_report+0xc/0x14
__asan_load8+0xa8/0xb0
qmi_invoke_handler+0xa4/0x148
qmi_handle_message+0x18c/0x1bc
qmi_data_ready_work+0x4ec/0x528
process_one_work+0x2c0/0x440
worker_thread+0x324/0x4b8
kthread+0x210/0x228
ret_from_fork+0x10/0x18

The address belongs to the variable:
ath12k_mac_mon_status_filter_default+0x4bd8/0xfffffffffffe2300 [ath12k]
[...]
==================================================================

Add a dummy terminator entry at the end to assist the qmi_invoke_handler()
in traversing up to the terminator entry without accessing an
out-of-boundary index.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Reviewed-by: Jeff Johnson <[email protected]>
Signed-off-by: Karthikeyan Kathirvel <[email protected]>
---
v2:
Added Tested-on tag and wifi prefix
---
drivers/net/wireless/ath/ath12k/qmi.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index db8ba5fec2ae..b837639e54f8 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -3180,6 +3180,9 @@ static const struct qmi_msg_handler ath12k_qmi_msg_handlers[] = {
.decoded_size = sizeof(struct qmi_wlanfw_fw_ready_ind_msg_v01),
.fn = ath12k_qmi_msg_fw_ready_cb,
},
+
+ /* end of list */
+ {},
};

static int ath12k_qmi_ops_new_server(struct qmi_handle *qmi_hdl,

base-commit: 363e7193eaf258fe7f04e8db560bd8a282a12cd9
--
2.34.1



2024-04-22 12:13:15

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH v2] wifi: ath12k: fix out-of-bound access of qmi_invoke_handler()

Karthikeyan Kathirvel <[email protected]> wrote:

> Currently, there is no terminator entry for ath12k_qmi_msg_handlers hence
> facing below KASAN warning,
>
> ==================================================================
> BUG: KASAN: global-out-of-bounds in qmi_invoke_handler+0xa4/0x148
> Read of size 8 at addr ffffffd00a6428d8 by task kworker/u8:2/1273
>
> CPU: 0 PID: 1273 Comm: kworker/u8:2 Not tainted 5.4.213 #0
> Workqueue: qmi_msg_handler qmi_data_ready_work
> Call trace:
> dump_backtrace+0x0/0x20c
> show_stack+0x14/0x1c
> dump_stack+0xe0/0x138
> print_address_description.isra.5+0x30/0x330
> __kasan_report+0x16c/0x1bc
> kasan_report+0xc/0x14
> __asan_load8+0xa8/0xb0
> qmi_invoke_handler+0xa4/0x148
> qmi_handle_message+0x18c/0x1bc
> qmi_data_ready_work+0x4ec/0x528
> process_one_work+0x2c0/0x440
> worker_thread+0x324/0x4b8
> kthread+0x210/0x228
> ret_from_fork+0x10/0x18
>
> The address belongs to the variable:
> ath12k_mac_mon_status_filter_default+0x4bd8/0xfffffffffffe2300 [ath12k]
> [...]
> ==================================================================
>
> Add a dummy terminator entry at the end to assist the qmi_invoke_handler()
> in traversing up to the terminator entry without accessing an
> out-of-boundary index.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
> Reviewed-by: Jeff Johnson <[email protected]>
> Signed-off-by: Karthikeyan Kathirvel <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

Patch applied to ath-next branch of ath.git, thanks.

e1bdff48a1bb wifi: ath12k: fix out-of-bound access of qmi_invoke_handler()

--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches