Skip to contentSkip to conversation

wifi: mwl8k: Use static_assert() to check struct sizes

PATCH In review Gustavo A. R. Silva 2 participants 2 messages Aug 8, 2024 – Aug 13, 2024 Marvell MWL8K wireless driver

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 wifi: mwl8k: Use static_assert() to check struct sizes

Commit 5c4250092fad ("wifi: mwl8k: Avoid -Wflex-array-member-not-at-end warnings") introduced tagged struct mwl8k_cmd_pkt_hdr. We want to ensure that when new members need to be added to the flexible structure, they are always included within this tagged struct.

We use static_assert() to ensure that the memory layout for both the flexible structure and the tagged struct is the same after any changes.

---
 drivers/net/wireless/marvell/mwl8k.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/net/wireless/marvell/mwl8k.c +3 -0
index b130e057370f..bab9ef37a1ab 100644
@@ -587,6 +587,7 @@ static int mwl8k_request_firmware(struct mwl8k_priv *priv, char *fw_image,
 }
 
 struct mwl8k_cmd_pkt {
+	/* New members MUST be added within the __struct_group() macro below. */
 	__struct_group(mwl8k_cmd_pkt_hdr, hdr, __packed,
 		__le16	code;
 		__le16	length;
@@ -596,6 +597,8 @@ struct mwl8k_cmd_pkt {
 	);
 	char payload[];
 } __packed;
+static_assert(offsetof(struct mwl8k_cmd_pkt, payload) == sizeof(struct mwl8k_cmd_pkt_hdr),
+	      "struct member likely outside of __struct_group()");
 
 /*
  * Firmware loading.
Signature · 1 line
2.34.1
#1 lore raw
Quoted 10 lines · Gustavo A. R. Silva

Commit 5c4250092fad ("wifi: mwl8k: Avoid -Wflex-array-member-not-at-end warnings") introduced tagged struct mwl8k_cmd_pkt_hdr. We want to ensure that when new members need to be added to the flexible structure, they are always included within this tagged struct.

We use static_assert() to ensure that the memory layout for both the flexible structure and the tagged struct is the same after any changes.

Patch applied to wireless-next.git, thanks.

748e21d94a34 wifi: mwl8k: Use static_assert() to check struct sizes

Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/patch/ZrVCg51Q9M2fTPaF@cute/

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