hw/smbios: fix offset of type 3 sku field
diff mbox series

Message ID 20190215153600.1770727-1-berrange@redhat.com
State New
Headers show
Series
  • hw/smbios: fix offset of type 3 sku field
Related show

Commit Message

Daniel P. Berrangé Feb. 15, 2019, 3:36 p.m. UTC
The type 3 SMBIOS structure[1] ends with fields

  ...
  0x14  - contained element count
  0x15  - contained element record length
  0x16  - sku number

The smbios_type_3 struct missed the contained element record
length field, causing sku number to be reported at the wrong
offset.

[1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 hw/smbios/smbios.c           | 1 +
 include/hw/firmware/smbios.h | 1 +
 2 files changed, 2 insertions(+)

Comments

Igor Mammedov Feb. 15, 2019, 4:40 p.m. UTC | #1
On Fri, 15 Feb 2019 15:36:00 +0000
Daniel P. Berrangé <berrange@redhat.com> wrote:

> The type 3 SMBIOS structure[1] ends with fields
> 
>   ...
>   0x14  - contained element count
>   0x15  - contained element record length
>   0x16  - sku number
> 
> The smbios_type_3 struct missed the contained element record
> length field, causing sku number to be reported at the wrong
> offset.
> 
> [1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> ---
>  hw/smbios/smbios.c           | 1 +
>  include/hw/firmware/smbios.h | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
> index 818be8a838..47be9071fa 100644
> --- a/hw/smbios/smbios.c
> +++ b/hw/smbios/smbios.c
> @@ -563,6 +563,7 @@ static void smbios_build_type_3_table(void)
>      t->height = 0;
>      t->number_of_power_cords = 0;
>      t->contained_element_count = 0;
> +    t->contained_element_record_length = 0;
>      SMBIOS_TABLE_SET_STR(3, sku_number_str, type3.sku);
>  
>      SMBIOS_BUILD_TABLE_POST;
> diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h
> index eeb5a4d7b6..6fef32a3c9 100644
> --- a/include/hw/firmware/smbios.h
> +++ b/include/hw/firmware/smbios.h
> @@ -162,6 +162,7 @@ struct smbios_type_3 {
>      uint8_t height;
>      uint8_t number_of_power_cords;
>      uint8_t contained_element_count;
> +    uint8_t contained_element_record_length;
>      uint8_t sku_number_str;
>      /* contained elements follow */
>  } QEMU_PACKED;
Philippe Mathieu-Daudé Feb. 15, 2019, 8:33 p.m. UTC | #2
On 2/15/19 4:36 PM, Daniel P. Berrangé wrote:
> The type 3 SMBIOS structure[1] ends with fields
> 
>   ...
>   0x14  - contained element count
>   0x15  - contained element record length
>   0x16  - sku number
> 
> The smbios_type_3 struct missed the contained element record
> length field, causing sku number to be reported at the wrong
> offset.
> 
> [1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf
> 

Fixes: e41fca3da72

> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---
>  hw/smbios/smbios.c           | 1 +
>  include/hw/firmware/smbios.h | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
> index 818be8a838..47be9071fa 100644
> --- a/hw/smbios/smbios.c
> +++ b/hw/smbios/smbios.c
> @@ -563,6 +563,7 @@ static void smbios_build_type_3_table(void)
>      t->height = 0;
>      t->number_of_power_cords = 0;
>      t->contained_element_count = 0;
> +    t->contained_element_record_length = 0;
>      SMBIOS_TABLE_SET_STR(3, sku_number_str, type3.sku);
>  
>      SMBIOS_BUILD_TABLE_POST;
> diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h
> index eeb5a4d7b6..6fef32a3c9 100644
> --- a/include/hw/firmware/smbios.h
> +++ b/include/hw/firmware/smbios.h
> @@ -162,6 +162,7 @@ struct smbios_type_3 {
>      uint8_t height;
>      uint8_t number_of_power_cords;
>      uint8_t contained_element_count;
> +    uint8_t contained_element_record_length;
>      uint8_t sku_number_str;
>      /* contained elements follow */
>  } QEMU_PACKED;
>

Patch
diff mbox series

diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index 818be8a838..47be9071fa 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -563,6 +563,7 @@  static void smbios_build_type_3_table(void)
     t->height = 0;
     t->number_of_power_cords = 0;
     t->contained_element_count = 0;
+    t->contained_element_record_length = 0;
     SMBIOS_TABLE_SET_STR(3, sku_number_str, type3.sku);
 
     SMBIOS_BUILD_TABLE_POST;
diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h
index eeb5a4d7b6..6fef32a3c9 100644
--- a/include/hw/firmware/smbios.h
+++ b/include/hw/firmware/smbios.h
@@ -162,6 +162,7 @@  struct smbios_type_3 {
     uint8_t height;
     uint8_t number_of_power_cords;
     uint8_t contained_element_count;
+    uint8_t contained_element_record_length;
     uint8_t sku_number_str;
     /* contained elements follow */
 } QEMU_PACKED;