[PATCH] smbios: Fix warning when building with clang

Tom Rini trini at konsulko.com
Fri Nov 7 00:28:38 CET 2025


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).

Signed-off-by: Tom Rini <trini at konsulko.com>
---
Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Cc: Raymond Mao <raymondmaoca at gmail.com>
Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
---
 include/smbios.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/smbios.h b/include/smbios.h
index b5fed57aba21..f2f7483bce5a 100644
--- a/include/smbios.h
+++ b/include/smbios.h
@@ -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;
-- 
2.43.0



More information about the U-Boot mailing list