[PATCH] smbios: Fix warning when building with clang
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Nov 12 13:23:53 CET 2025
On Fri, 7 Nov 2025 at 01:28, Tom Rini <trini at konsulko.com> 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 <trini at konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
> 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