wifi: b43: fix incorrect __packed annotation
PATCH v2 1/1 wifi: b43: fix incorrect __packed annotation
From: Arnd Bergmann <[email protected]>
clang warns about an unpacked structure inside of a packed one:
drivers/net/wireless/broadcom/b43/b43.h:654:4: error: field data within 'struct b43_iv' is less aligned than 'union (unnamed union at /home/arnd/arm-soc/drivers/net/wireless/broadcom/b43/b43.h:651:2)' and is usually due to 'struct b43_iv' being packed, which can lead to unaligned accesses [-Werror,-Wunaligned-access]
The problem here is that the anonymous union has the default alignment from its members, apparently because the original author mixed up the placement of the __packed attribute by placing it next to the struct member rather than the union definition. As the struct itself is also marked as __packed, there is no need to mark its members, so just move the annotation to the inner type instead.
As Michael noted, the same problem is present in b43legacy, so change both at the same time.
--- drivers/net/wireless/broadcom/b43/b43.h | 2 +- drivers/net/wireless/broadcom/b43legacy/b43legacy.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/wireless/broadcom/b43/b43.h +1 -1
@@ -651,7 +651,7 @@ struct b43_iv {union {__be16 d16;__be32 d32; - } data __packed; + } __packed data; } __packed;
drivers/net/wireless/broadcom/b43legacy/b43legacy.h +1 -1
@@ -379,7 +379,7 @@ struct b43legacy_iv {union {__be16 d16;__be32 d32; - } data __packed; + } __packed data; } __packed;#define B43legacy_PHYMODE (phytype) (1 << (phytype))
Signature · 1 line
2.39.2
Quoted 16 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
clang warns about an unpacked structure inside of a packed one:
drivers/net/wireless/broadcom/b43/b43.h:654:4: error: field data within 'structb43_iv' is less aligned than 'union (unnamed union at/home/arnd/arm-soc/drivers/net/wireless/broadcom/b43/b43.h:651:2)' and is usually due to 'structb43_iv' being packed, which can lead to unaligned accesses [-Werror,-Wunaligned-access]The problem here is that the anonymous union has the default alignment from its members, apparently because the original author mixed up the placement of the
__packedattribute by placing it next to the struct member rather than the union definition. As the struct itself is also marked as__packed, there is no need to mark its members, so just move the annotation to the inner type instead.As Michael noted, the same problem is present in b43legacy, so change both at the same time.
Quoted 6 lines
Acked-by Michael Büsch <[email protected]>Reported-by kernel test robot <[email protected]>Reviewed-by Simon Horman <[email protected]>Tested-by Larry Finger <[email protected]>Signed-off-by Arnd Bergmann <[email protected]>
Patch applied to wireless.git, thanks.
212457ccbd60 wifi: b43: fix incorrect __packed annotation
Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches