Similar to the previous commit, use the FWCfgState lifetime state to hold the 'bst_le16' variable content (renaned as time_le16). Doing so we avoid a memory leak.
Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- hw/nvram/fw_cfg.c | 6 +++--- include/hw/nvram/fw_cfg.h | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 182d27f59a..3ac6687a04 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -187,7 +187,6 @@ static void fw_cfg_bootsplash(FWCfgState *s) /* insert splash time if user configurated */ if (boot_splash_time) { int64_t bst_val = qemu_opt_get_number(opts, "splash-time", -1); - uint16_t bst_le16; /* validate the input */ if (bst_val < 0 || bst_val > 0xffff) { @@ -196,9 +195,10 @@ static void fw_cfg_bootsplash(FWCfgState *s) exit(1); } /* use little endian format */ - bst_le16 = cpu_to_le16(bst_val); + s->boot_splash.time_le16 = cpu_to_le16(bst_val); fw_cfg_add_file(s, "etc/boot-menu-wait", - g_memdup(&bst_le16, sizeof bst_le16), sizeof bst_le16); + &s->boot_splash.time_le16, + sizeof(s->boot_splash.time_le16)); } /* insert splash file if user configurated */ diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index 99f6fafcaa..fcb771186c 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -55,6 +55,9 @@ struct FWCfgState { MemoryRegion dma_iomem; uint32_t reboot_timeout; + struct { + uint16_t time_le16; + } boot_splash; }; struct FWCfgIoState { -- 2.20.1