]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
smbios: Fix warning when building with clang
authorTom Rini <trini@konsulko.com>
Thu, 6 Nov 2025 23:28:38 +0000 (17:28 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 18 Nov 2025 21:53:39 +0000 (15:53 -0600)
When building with clang, we see warnings such as:
error: field max_size within 'struct smbios_type7' is less aligned than
'union cache_size_word' and is usually due to 'struct smbios_type7'
being packed, which can lead to unaligned accesses
[-Werror,-Wunaligned-access]
when building drivers/sysinfo/smbios.c. Resolve this error by packing
the unions as well after verifying they are complete (16 or 32 bits).

Reviewed-by: Raymond Mao <raymondmaoca@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
include/smbios.h

index b5fed57aba2122d89478b4c8a66e12ddd3f6cad2..f2f7483bce5a2379245466f9daa8483f606e2046 100644 (file)
@@ -204,7 +204,7 @@ struct __packed smbios_type4 {
        char eos[SMBIOS_STRUCT_EOS_BYTES];
 };
 
-union cache_config {
+union __packed cache_config {
        struct {
                u16 level:3;
                u16 bsocketed:1;
@@ -217,7 +217,7 @@ union cache_config {
        u16 data;
 };
 
-union cache_size_word {
+union __packed cache_size_word {
        struct {
                u16 size:15;
                u16 granu:1;
@@ -225,7 +225,7 @@ union cache_size_word {
        u16 data;
 };
 
-union cache_size_dword {
+union __packed cache_size_dword {
        struct {
                u32 size:31;
                u32 granu:1;
@@ -233,7 +233,7 @@ union cache_size_dword {
        u32 data;
 };
 
-union cache_sram_type {
+union __packed cache_sram_type {
        struct {
                u16 other:1;
                u16 unknown:1;