[PATCH 3/3] smbios: correctly name Structure Table Maximum Size field

Ilias Apalodimas ilias.apalodimas at linaro.org
Tue Feb 13 15:23:28 CET 2024


On Thu, 1 Feb 2024 at 02:20, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> In the SMBIOS 3 entry point the Structure Table Maximum Size field was
> incorrectly named max_struct_size. A Maximum Structure Size field only
> exists in the SMBIOS 2.1 entry point and has a different meaning.
>
> Call the Structure Table Length field table_maximum_size.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  cmd/smbios.c                | 2 +-
>  drivers/misc/qfw_smbios.c   | 2 +-
>  include/smbios.h            | 2 +-
>  lib/efi_loader/efi_tcg2.c   | 4 ++--
>  lib/efi_loader/smbiosdump.c | 6 +++---
>  lib/smbios-parser.c         | 2 +-
>  lib/smbios.c                | 2 +-
>  7 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/cmd/smbios.c b/cmd/smbios.c
> index e2d82be163..66f6b76137 100644
> --- a/cmd/smbios.c
> +++ b/cmd/smbios.c
> @@ -142,7 +142,7 @@ static int do_smbios(struct cmd_tbl *cmdtp, int flag, int argc,
>                          entry3->major_ver, entry3->minor_ver, entry3->doc_rev);
>                 table = (void *)(uintptr_t)entry3->struct_table_address;
>                 size = entry3->length;
> -               table_maximum_size = entry3->max_struct_size;
> +               table_maximum_size = entry3->table_maximum_size;
>         } else if (!memcmp(entry, smbios_sig, sizeof(smbios_sig) - 1)) {
>                 struct smbios_entry *entry2 = entry;
>
> diff --git a/drivers/misc/qfw_smbios.c b/drivers/misc/qfw_smbios.c
> index a898cb4eea..c3e8c310d0 100644
> --- a/drivers/misc/qfw_smbios.c
> +++ b/drivers/misc/qfw_smbios.c
> @@ -90,7 +90,7 @@ static int qfw_parse_smbios_anchor(struct udevice *dev,
>                 entry->length = sizeof(struct smbios3_entry);
>                 entry->major_ver = entry2->major_ver;
>                 entry->minor_ver = entry2->minor_ver;
> -               entry->max_struct_size = entry2->struct_table_length;
> +               entry->table_maximum_size = entry2->struct_table_length;
>         } else {
>                 ret = -ENOENT;
>                 goto out;
> diff --git a/include/smbios.h b/include/smbios.h
> index e2b7f69584..3df8827b60 100644
> --- a/include/smbios.h
> +++ b/include/smbios.h
> @@ -75,7 +75,7 @@ struct __packed smbios3_entry {
>         /** @reserved: reserved */
>         u8 reserved;
>         /** maximum size of SMBIOS table */
> -       u32 max_struct_size;
> +       u32 table_maximum_size;
>         /** @struct_table_address: 64-bit physical starting address */
>         u64 struct_table_address;
>  };
> diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c
> index b5d4aa7be5..b07e0099c2 100644
> --- a/lib/efi_loader/efi_tcg2.c
> +++ b/lib/efi_loader/efi_tcg2.c
> @@ -1098,7 +1098,7 @@ tcg2_measure_smbios(struct udevice *dev,
>          */
>         event_size = sizeof(struct smbios_handoff_table_pointers2) +
>                      FIELD_SIZEOF(struct efi_configuration_table, guid) +
> -                    entry->max_struct_size;
> +                    entry->table_maximum_size;
>         event = calloc(1, event_size);
>         if (!event) {
>                 ret = EFI_OUT_OF_RESOURCES;
> @@ -1113,7 +1113,7 @@ tcg2_measure_smbios(struct udevice *dev,
>         smbios_copy = (struct smbios_header *)((uintptr_t)&event->table_entry[0].table);
>         memcpy(&event->table_entry[0].table,
>                (void *)((uintptr_t)entry->struct_table_address),
> -              entry->max_struct_size);
> +              entry->table_maximum_size);
>
>         smbios_prepare_measurement(entry, smbios_copy);
>
> diff --git a/lib/efi_loader/smbiosdump.c b/lib/efi_loader/smbiosdump.c
> index f0b901897e..2f0b91a353 100644
> --- a/lib/efi_loader/smbiosdump.c
> +++ b/lib/efi_loader/smbiosdump.c
> @@ -329,7 +329,7 @@ efi_status_t do_check(void)
>                         return EFI_LOAD_ERROR;
>                 }
>                 table = (void *)(uintptr_t)smbios3_anchor->struct_table_address;
> -               len = smbios3_anchor->max_struct_size;
> +               len = smbios3_anchor->table_maximum_size;
>         } else {
>                 struct smbios_entry *smbios_anchor;
>                 int r;
> @@ -469,7 +469,7 @@ static efi_status_t do_save(u16 *filename)
>
>         smbios3_anchor = get_config_table(&smbios3_guid);
>         if (smbios3_anchor) {
> -               size = 0x20 + smbios3_anchor->max_struct_size;
> +               size = 0x20 + smbios3_anchor->table_maximum_size;
>                 ret = bs->allocate_pool(EFI_LOADER_DATA, size, (void **)&buf);
>                 if (ret != EFI_SUCCESS) {
>                         error(u"Out of memory\n");
> @@ -480,7 +480,7 @@ static efi_status_t do_save(u16 *filename)
>                 memcpy(buf, smbios3_anchor, smbios3_anchor->length);
>                 memcpy(buf + 0x20,
>                        (void *)(uintptr_t)smbios3_anchor->struct_table_address,
> -                      smbios3_anchor->max_struct_size);
> +                      smbios3_anchor->table_maximum_size);
>
>                 smbios3_anchor = (struct smbios3_entry *)buf;
>                 smbios3_anchor->struct_table_address = 0x20;
> diff --git a/lib/smbios-parser.c b/lib/smbios-parser.c
> index 0d1ac781b3..9a62b3c760 100644
> --- a/lib/smbios-parser.c
> +++ b/lib/smbios-parser.c
> @@ -230,7 +230,7 @@ void smbios_prepare_measurement(const struct smbios3_entry *entry,
>         void *table_end;
>         struct smbios_header *header;
>
> -       table_end = (void *)((u8 *)smbios_copy + entry->max_struct_size);
> +       table_end = (void *)((u8 *)smbios_copy + entry->table_maximum_size);
>
>         for (i = 0; i < ARRAY_SIZE(smbios_filter_tables); i++) {
>                 header = smbios_copy;
> diff --git a/lib/smbios.c b/lib/smbios.c
> index 327f78c8b0..c83af730a9 100644
> --- a/lib/smbios.c
> +++ b/lib/smbios.c
> @@ -615,7 +615,7 @@ ulong write_smbios_table(ulong addr)
>         se->minor_ver = SMBIOS_MINOR_VER;
>         se->doc_rev = 0;
>         se->entry_point_rev = 1;
> -       se->max_struct_size = len;
> +       se->table_maximum_size = len;
>         se->struct_table_address = table_addr;
>         se->checksum = table_compute_checksum(se, sizeof(struct smbios3_entry));
>         unmap_sysmem(se);
> --
> 2.43.0
>

Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>


More information about the U-Boot mailing list