Hi Tom, On Thu, Nov 6, 2025 at 6:28 PM 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]> > --- > 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(-) > > Reviewed-by: Raymond Mao <[email protected]> Raymond > 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 > >

