The unpacked union within a packed struct generates alignment warnings
on clang for 32-bit ARM:

./usr/include/linux/hyperv.h:361:2: error: field  within 'struct 
hv_kvp_exchg_msg_value'
  is less aligned than 'union hv_kvp_exchg_msg_value::(anonymous at 
./usr/include/linux/hyperv.h:361:2)'
  and is usually due to 'struct hv_kvp_exchg_msg_value' being packed,
  which can lead to unaligned accesses [-Werror,-Wunaligned-access]
     361 |         union {
         |         ^

With the recent changes to compile-test the UAPI headers in more cases,
this warning in combination with CONFIG_WERROR breaks the build.

Fix the warning.

Reported-by: kernel test robot <[email protected]>
Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/
Reported-by: Nathan Chancellor <[email protected]>
Closes: 
https://lore.kernel.org/linux-kbuild/20260110-uapi-test-disable-headers-arm-clang-unaligned-access-v1-1-b7b0fa541...@kernel.org/
Suggested-by: Arnd Bergmann <[email protected]>
Link: 
https://lore.kernel.org/linux-kbuild/[email protected]/
Signed-off-by: Thomas Weißschuh <[email protected]>
---
 include/uapi/linux/hyperv.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/hyperv.h b/include/uapi/linux/hyperv.h
index aaa502a7bff4..1749b35ab2c2 100644
--- a/include/uapi/linux/hyperv.h
+++ b/include/uapi/linux/hyperv.h
@@ -362,7 +362,7 @@ struct hv_kvp_exchg_msg_value {
                __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
                __u32 value_u32;
                __u64 value_u64;
-       };
+       } __attribute__((packed));
 } __attribute__((packed));
 
 struct hv_kvp_msg_enumerate {

-- 
2.52.0


Reply via email to