On Thu, 2019-01-24 at 19:05 +0100, Mathieu Malaterre wrote: > During refactor in commit 9e478066eae4 ("mac80211: fix MU-MIMO > follow-MAC mode") a new struct 'action' was declared with packed > attribute as: > > struct { > struct ieee80211_hdr_3addr hdr; > u8 category; > u8 action_code; > } __packed action; > > But since struct 'ieee80211_hdr_3addr' is declared with an aligned > keyword as: > > struct ieee80211_hdr { > __le16 frame_control; > __le16 duration_id; > u8 addr1[ETH_ALEN]; > u8 addr2[ETH_ALEN]; > u8 addr3[ETH_ALEN]; > __le16 seq_ctrl; > u8 addr4[ETH_ALEN]; > } __packed __aligned(2); > > Solve the ambiguity of placing aligned structure in a packed one by > removing the packed attribute from struct. This seems to be the behavior > of gcc anyway, since the following is still compiling: > > BUILD_BUG_ON(sizeof(action) != IEEE80211_MIN_ACTION_SIZE + 1); I'm not sure this will work on all platforms, didn't something like alpha pad out u8's to u32 when not requiring packing? I guess I'd feel better about using __packed __aligned(2) here as well, which should solve the warning too? johannes