Skip to contentSkip to conversation

wifi: mac80211: Add __nonstring annotations for unterminated strings

PATCH In review Kees Cook 2 participants 3 messages Mar 10, 2025 – Mar 11, 2025

Subsystems (4)
lore
Share & tools
lore

Kees Cook

author
#0 lore raw

PATCH 1/1 wifi: mac80211: Add __nonstring annotations for unterminated strings

When a character array without a terminating NUL character has a static initializer, GCC 15's -Wunterminated-string-initialization will only warn if the array lacks the "nonstring" attribute[1]. Mark the arrays with __nonstring to and correctly identify the char array as "not a C string" and thereby eliminate the warning.

Cc Andrew Lunn <[email protected]>
Cc "David S. Miller" <[email protected]>
Cc Eric Dumazet <[email protected]>
Cc Jakub Kicinski <[email protected]>
Cc Paolo Abeni <[email protected]>
Cc Johannes Berg <[email protected]>
Cc Kalle Valo <[email protected]>
Cc Julia Lawall <[email protected]>
Cc En-Wei Wu <[email protected]>
Cc Shaul Triebitz <[email protected]>
Cc Alexander Wetzel <[email protected]>
Cc Emmanuel Grumbach <[email protected]>
---
 drivers/net/wireless/virtual/virt_wifi.c     | 2 +-
 drivers/net/wireless/zydas/zd1211rw/zd_mac.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/wireless/virtual/virt_wifi.c +1 -1
index 4ee374080466..fc122b79301a 100644
@@ -146,7 +146,7 @@ static void virt_wifi_inform_bss(struct wiphy *wiphy)
 	static const struct {
 		u8 tag;
 		u8 len;
-		u8 ssid[8];
+		u8 ssid[8] __nonstring;
 	} __packed ssid = {
 		.tag = WLAN_EID_SSID,
 		.len = VIRT_WIFI_SSID_LEN,
drivers/net/wireless/zydas/zd1211rw/zd_mac.c +1 -1
index f90c33d19b39..9653dbaac3c0 100644
@@ -21,7 +21,7 @@
 
 struct zd_reg_alpha2_map {
 	u32 reg;
-	char alpha2[2];
+	char alpha2[2] __nonstring;
 };
 
 static struct zd_reg_alpha2_map reg_alpha2_map[] = {
Signature · 1 line
2.34.1
maintainer
#1 lore raw
Quoted 4 lines · Kees Cook
 drivers/net/wireless/virtual/virt_wifi.c     | 2 +-
 drivers/net/wireless/zydas/zd1211rw/zd_mac.c | 2 +-

That's not mac80211?

Also, I have no idea how you came up with the CC list but it seems excessive. :)

johannes

author
#2 lore raw
Quoted 7 lines · Johannes Berg
Quoted 4 lines · Kees Cook
 drivers/net/wireless/virtual/virt_wifi.c     | 2 +-
 drivers/net/wireless/zydas/zd1211rw/zd_mac.c | 2 +-

That's not mac80211?

Hrm, you're right. The automation I use for splitting up "treewide" changes per subsystem tries to guess at a reasonable subject give a set of files, based on historical git subject prefixes. And these two files ended up grouped together because no more specific subsystem claimed them.

It seems I should probably split this into two, as:

wifi: zd1211rw:
wifi: virt_wifi:

Quoted 2 lines

Also, I have no idea how you came up with the CC list but it seems excessive. :)

It's based on my permutation of arguments to get_maintainers.pl that seems to work best for splitting my "treewide" changes per subsystem:

        ccs = subprocess.run(["./scripts/get_maintainer.pl", "--email",
                              "--git-min-percent", "15",
                              "--git-since", '3-years-ago',
                              "--no-rolestats", patch.name],

-Kees

Signature · 1 line
Kees Cook