Message ID | 20240122221529.86562-2-dbarboza@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | hw/riscv: fix leak, add more g_autofree | expand |
On Tue, Jan 23, 2024 at 8:16 AM Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > The 'isa' char pointer isn't being freed after use. > > Issue detected by Valgrind: > > ==38752== 128 bytes in 1 blocks are definitely lost in loss record 3,190 of 3,884 > ==38752== at 0x484280F: malloc (vg_replace_malloc.c:442) > ==38752== by 0x5189619: g_malloc (gmem.c:130) > ==38752== by 0x51A5BF2: g_strconcat (gstrfuncs.c:628) > ==38752== by 0x6C1E3E: riscv_isa_string_ext (cpu.c:2321) > ==38752== by 0x6C1E3E: riscv_isa_string (cpu.c:2343) > ==38752== by 0x6BD2EA: build_rhct (virt-acpi-build.c:232) > ==38752== by 0x6BD2EA: virt_acpi_build (virt-acpi-build.c:556) > ==38752== by 0x6BDC86: virt_acpi_setup (virt-acpi-build.c:662) > ==38752== by 0x9C8DC6: notifier_list_notify (notify.c:39) > ==38752== by 0x4A595A: qdev_machine_creation_done (machine.c:1589) > ==38752== by 0x61E052: qemu_machine_creation_done (vl.c:2680) > ==38752== by 0x61E052: qmp_x_exit_preconfig.part.0 (vl.c:2709) > ==38752== by 0x6220C6: qmp_x_exit_preconfig (vl.c:2702) > ==38752== by 0x6220C6: qemu_init (vl.c:3758) > ==38752== by 0x425858: main (main.c:47) > > Fixes: ebfd392893 ("hw/riscv/virt: virt-acpi-build.c: Add RHCT Table") > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/riscv/virt-acpi-build.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c > index 26c7e4482d..fb8baf64f6 100644 > --- a/hw/riscv/virt-acpi-build.c > +++ b/hw/riscv/virt-acpi-build.c > @@ -196,7 +196,7 @@ static void build_rhct(GArray *table_data, > RISCVCPU *cpu = &s->soc[0].harts[0]; > uint32_t mmu_offset = 0; > uint8_t satp_mode_max; > - char *isa; > + g_autofree char *isa = NULL; > > AcpiTable table = { .sig = "RHCT", .rev = 1, .oem_id = s->oem_id, > .oem_table_id = s->oem_table_id }; > -- > 2.43.0 > >
diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c index 26c7e4482d..fb8baf64f6 100644 --- a/hw/riscv/virt-acpi-build.c +++ b/hw/riscv/virt-acpi-build.c @@ -196,7 +196,7 @@ static void build_rhct(GArray *table_data, RISCVCPU *cpu = &s->soc[0].harts[0]; uint32_t mmu_offset = 0; uint8_t satp_mode_max; - char *isa; + g_autofree char *isa = NULL; AcpiTable table = { .sig = "RHCT", .rev = 1, .oem_id = s->oem_id, .oem_table_id = s->oem_table_id };
The 'isa' char pointer isn't being freed after use. Issue detected by Valgrind: ==38752== 128 bytes in 1 blocks are definitely lost in loss record 3,190 of 3,884 ==38752== at 0x484280F: malloc (vg_replace_malloc.c:442) ==38752== by 0x5189619: g_malloc (gmem.c:130) ==38752== by 0x51A5BF2: g_strconcat (gstrfuncs.c:628) ==38752== by 0x6C1E3E: riscv_isa_string_ext (cpu.c:2321) ==38752== by 0x6C1E3E: riscv_isa_string (cpu.c:2343) ==38752== by 0x6BD2EA: build_rhct (virt-acpi-build.c:232) ==38752== by 0x6BD2EA: virt_acpi_build (virt-acpi-build.c:556) ==38752== by 0x6BDC86: virt_acpi_setup (virt-acpi-build.c:662) ==38752== by 0x9C8DC6: notifier_list_notify (notify.c:39) ==38752== by 0x4A595A: qdev_machine_creation_done (machine.c:1589) ==38752== by 0x61E052: qemu_machine_creation_done (vl.c:2680) ==38752== by 0x61E052: qmp_x_exit_preconfig.part.0 (vl.c:2709) ==38752== by 0x6220C6: qmp_x_exit_preconfig (vl.c:2702) ==38752== by 0x6220C6: qemu_init (vl.c:3758) ==38752== by 0x425858: main (main.c:47) Fixes: ebfd392893 ("hw/riscv/virt: virt-acpi-build.c: Add RHCT Table") Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- hw/riscv/virt-acpi-build.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)