On 06/06/13 18:27, Markus Armbruster wrote: > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > arch_init.c | 3 ++- > hw/nvram/fw_cfg.c | 2 +- > include/sysemu/sysemu.h | 2 +- > 3 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/arch_init.c b/arch_init.c > index 5d71870..aa24660 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -1029,7 +1029,8 @@ int qemu_uuid_parse(const char *str, uint8_t *uuid) > return -1; > } > #ifdef TARGET_I386 > - smbios_add_field(1, offsetof(struct smbios_type_1, uuid), 16, uuid); > + smbios_add_field(1, offsetof(struct smbios_type_1, uuid), > + sizeof(uuid), uuid); > #endif > return 0; > }
I believe this is wrong, "uuid" is not an array here but a pointer. I guess you mistyped "sizeof(qemu_uuid)" as "sizeof(uuid)" in the third arg. > diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c > index 3c255ce..f1d3861 100644 > --- a/hw/nvram/fw_cfg.c > +++ b/hw/nvram/fw_cfg.c > @@ -509,7 +509,7 @@ FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t > data_port, > sysbus_mmio_map(d, 1, data_addr); > } > fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4); > - fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16); > + fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, sizeof(qemu_uuid)); > fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == > DT_NOGRAPHIC)); > fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus); > fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu); > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index 2fb71af..b969e56 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -15,7 +15,7 @@ > extern const char *bios_name; > > extern const char *qemu_name; > -extern uint8_t qemu_uuid[]; > +extern uint8_t qemu_uuid[16]; > int qemu_uuid_parse(const char *str, uint8_t *uuid); > #define UUID_FMT > "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" > > Rest seems OK. Laszlo