diff options
-rw-r--r-- | hw/smbios/smbios.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 30196d2911..090a6eb018 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -1411,6 +1411,14 @@ static bool save_opt_list(size_t *ndest, char ***dest, QemuOpts *opts, return true; } +static void smbios_add_usr_blob_size(size_t size) +{ + if (!usr_blobs_sizes) { + usr_blobs_sizes = g_array_new(false, false, sizeof(size_t)); + } + g_array_append_val(usr_blobs_sizes, size); +} + void smbios_entry_add(QemuOpts *opts, Error **errp) { const char *val; @@ -1458,10 +1466,12 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) smbios_type4_count++; } - if (!usr_blobs_sizes) { - usr_blobs_sizes = g_array_new(false, false, sizeof(size_t)); - } - g_array_append_val(usr_blobs_sizes, size); + /* + * preserve blob size for legacy mode so it could build its + * blobs flavor from 'usr_blobs' + */ + smbios_add_usr_blob_size(size); + usr_blobs_len += size; if (size > usr_table_max) { usr_table_max = size; |