lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250716075100.1447352-6-alexander.wilhelm@westermo.com>
Date: Wed, 16 Jul 2025 09:50:54 +0200
From: Alexander Wilhelm <alexander.wilhelm@...termo.com>
To: Jeff Johnson <jjohnson@...nel.org>, Bjorn Andersson <andersson@...nel.org>,
        Konrad Dybcio <konradybcio@...nel.org>
Cc: linux-wireless@...r.kernel.org, ath12k@...ts.infradead.org,
        linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org
Subject: [PATCH 05/11] wifi: ath12k: fix endianness handling in QMI respond firmware memory

Ensure proper endianness support for big-endian platforms by correcting
data types in the QMI respond firmware memory request message and its
associated structures as well. Add missing byte swaps wherever these
structures are accessed or modified.

Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Alexander Wilhelm <alexander.wilhelm@...termo.com>
---
 drivers/net/wireless/ath/ath12k/qmi.c | 10 +++++-----
 drivers/net/wireless/ath/ath12k/qmi.h |  8 ++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index 146e9e1c4834..2d00ea54e478 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -2392,11 +2392,11 @@ int ath12k_qmi_respond_fw_mem_request(struct ath12k_base *ab)
 			   ab->qmi.mem_seg_count);
 	} else {
 		delayed = false;
-		req->mem_seg_len = ab->qmi.mem_seg_count;
-		for (i = 0; i < req->mem_seg_len ; i++) {
-			req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr;
-			req->mem_seg[i].size = ab->qmi.target_mem[i].size;
-			req->mem_seg[i].type = ab->qmi.target_mem[i].type;
+		req->mem_seg_len = cpu_to_le32(ab->qmi.mem_seg_count);
+		for (i = 0; i < ab->qmi.mem_seg_count; i++) {
+			req->mem_seg[i].addr = cpu_to_le64(ab->qmi.target_mem[i].paddr);
+			req->mem_seg[i].size = cpu_to_le32(ab->qmi.target_mem[i].size);
+			req->mem_seg[i].type = cpu_to_le32(ab->qmi.target_mem[i].type);
 			ath12k_dbg(ab, ATH12K_DBG_QMI,
 				   "qmi req mem_seg[%d] %pad %u %u\n", i,
 				   &ab->qmi.target_mem[i].paddr,
diff --git a/drivers/net/wireless/ath/ath12k/qmi.h b/drivers/net/wireless/ath/ath12k/qmi.h
index 92993c85cec9..bd715bca8f23 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.h
+++ b/drivers/net/wireless/ath/ath12k/qmi.h
@@ -356,14 +356,14 @@ struct qmi_wlanfw_request_mem_ind_msg_v01 {
 };
 
 struct qmi_wlanfw_mem_seg_resp_s_v01 {
-	u64 addr;
-	u32 size;
-	enum qmi_wlanfw_mem_type_enum_v01 type;
+	__le64 addr;
+	__le32 size;
+	__le32 type;
 	u8 restore;
 };
 
 struct qmi_wlanfw_respond_mem_req_msg_v01 {
-	u32 mem_seg_len;
+	__le32 mem_seg_len;
 	struct qmi_wlanfw_mem_seg_resp_s_v01 mem_seg[ATH12K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01];
 };
 
-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ