diff mbox series

[v2,17/20] smbios: clear smbios_type4_count before building tables

Message ID 20240305155724.2047069-18-imammedo@redhat.com
State New
Headers show
Series Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS | expand

Commit Message

Igor Mammedov March 5, 2024, 3:57 p.m. UTC
it will help to keep type 4 tables accounting correct in case
SMBIOS tables are built multiple times.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
---
 hw/smbios/smbios.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Ani Sinha March 6, 2024, 7:47 a.m. UTC | #1
> On 05-Mar-2024, at 21:27, Igor Mammedov <imammedo@redhat.com> wrote:
> 
> it will help to keep type 4 tables accounting correct in case
> SMBIOS tables are built multiple times.


I suggest you arrange this before patch 15 where you are actually calling smbios_get_tables_ep() multiple times. That way there is no window where things can break between patches.

> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Tested-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
> hw/smbios/smbios.c | 1 +
> 1 file changed, 1 insertion(+)
> 
> diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
> index bf5c7a8885..b64d3bc227 100644
> --- a/hw/smbios/smbios.c
> +++ b/hw/smbios/smbios.c
> @@ -981,6 +981,7 @@ static bool smbios_get_tables_ep(MachineState *ms,
>            ep_type == SMBIOS_ENTRY_POINT_TYPE_64);
> 
>     g_free(smbios_tables);
> +    smbios_type4_count = 0;

Nit: Can you put this before g_free() because gfree(smbios_tables) and smbios_tables = memdup2() etc are related. This is kind of coming in between.

>     smbios_tables = g_memdup2(usr_blobs, usr_blobs_len);
>     smbios_tables_len = usr_blobs_len;
>     smbios_table_max = usr_table_max;
> -- 
> 2.39.3
>
Igor Mammedov March 6, 2024, 9:58 a.m. UTC | #2
On Wed, 6 Mar 2024 13:17:39 +0530
Ani Sinha <anisinha@redhat.com> wrote:

> > On 05-Mar-2024, at 21:27, Igor Mammedov <imammedo@redhat.com> wrote:
> > 
> > it will help to keep type 4 tables accounting correct in case
> > SMBIOS tables are built multiple times.  
> 
> 
> I suggest you arrange this before patch 15 where you are actually calling smbios_get_tables_ep() multiple times. That way there is no window where things can break between patches.

it doesn't break in patch by patch test, because auto is not in use yet.
It could be moved but, I'd rather not respin series for the sake of reordering.

Michael can you reorder it before 15/20 when applying?

> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > Tested-by: Fiona Ebner <f.ebner@proxmox.com>
> > ---
> > hw/smbios/smbios.c | 1 +
> > 1 file changed, 1 insertion(+)
> > 
> > diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
> > index bf5c7a8885..b64d3bc227 100644
> > --- a/hw/smbios/smbios.c
> > +++ b/hw/smbios/smbios.c
> > @@ -981,6 +981,7 @@ static bool smbios_get_tables_ep(MachineState *ms,
> >            ep_type == SMBIOS_ENTRY_POINT_TYPE_64);
> > 
> >     g_free(smbios_tables);
> > +    smbios_type4_count = 0;  
> 
> Nit: Can you put this before g_free() because gfree(smbios_tables) and smbios_tables = memdup2() etc are related. This is kind of coming in between.
cleanup is not related to memdup, the later works fine without cleanup.
I'd prefer to keep it as is.

> 
> >     smbios_tables = g_memdup2(usr_blobs, usr_blobs_len);
> >     smbios_tables_len = usr_blobs_len;
> >     smbios_table_max = usr_table_max;
> > -- 
> > 2.39.3
> >   
>
diff mbox series

Patch

diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index bf5c7a8885..b64d3bc227 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -981,6 +981,7 @@  static bool smbios_get_tables_ep(MachineState *ms,
            ep_type == SMBIOS_ENTRY_POINT_TYPE_64);
 
     g_free(smbios_tables);
+    smbios_type4_count = 0;
     smbios_tables = g_memdup2(usr_blobs, usr_blobs_len);
     smbios_tables_len = usr_blobs_len;
     smbios_table_max = usr_table_max;