On Fri, 7 Nov 2025 at 01:28, Tom Rini <[email protected]> wrote: > > 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 <[email protected]>
Reviewed-by: Ilias Apalodimas <[email protected]> > --- > Cc: Ilias Apalodimas <[email protected]> > Cc: Raymond Mao <[email protected]> > Cc: Heinrich Schuchardt <[email protected]> > --- > 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 >

