[PATCH 1/7] hw/riscv/virt-acpi-build.c: fix leak in build_rhct()

Daniel Henrique Barboza posted 7 patches 10 months, 1 week ago
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Sunil V L <sunilvl@ventanamicro.com>
[PATCH 1/7] hw/riscv/virt-acpi-build.c: fix leak in build_rhct()
Posted by Daniel Henrique Barboza 10 months, 1 week ago
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(-)

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
Re: [PATCH 1/7] hw/riscv/virt-acpi-build.c: fix leak in build_rhct()
Posted by Alistair Francis 9 months, 3 weeks ago
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
>
>