Message ID | 20240122221529.86562-5-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: > > Move 'clust_name' inside the loop, and g_autofree, to avoid having to > g_free() manually in each loop iteration. > > 'intc_phandles' is also g_autofreed to avoid another manual g_free(). > > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/riscv/virt.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index 373b1dd96b..d0f402e0d5 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -721,11 +721,11 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, > uint32_t *irq_virtio_phandle, > uint32_t *msi_pcie_phandle) > { > - char *clust_name; > int socket, phandle_pos; > MachineState *ms = MACHINE(s); > uint32_t msi_m_phandle = 0, msi_s_phandle = 0; > - uint32_t *intc_phandles, xplic_phandles[MAX_NODES]; > + uint32_t xplic_phandles[MAX_NODES]; > + g_autofree uint32_t *intc_phandles = NULL; > int socket_count = riscv_socket_count(ms); > > qemu_fdt_add_subnode(ms->fdt, "/cpus"); > @@ -739,6 +739,7 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, > > phandle_pos = ms->smp.cpus; > for (socket = (socket_count - 1); socket >= 0; socket--) { > + g_autofree char *clust_name = NULL; > phandle_pos -= s->soc[socket].num_harts; > > clust_name = g_strdup_printf("/cpus/cpu-map/cluster%d", socket); > @@ -749,8 +750,6 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, > > create_fdt_socket_memory(s, memmap, socket); > > - g_free(clust_name); > - > if (tcg_enabled()) { > if (s->have_aclint) { > create_fdt_socket_aclint(s, memmap, socket, > @@ -793,8 +792,6 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, > } > } > > - g_free(intc_phandles); > - > if (kvm_enabled() && virt_use_kvm_aia(s)) { > *irq_mmio_phandle = xplic_phandles[0]; > *irq_virtio_phandle = xplic_phandles[0]; > -- > 2.43.0 > >
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 373b1dd96b..d0f402e0d5 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -721,11 +721,11 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, uint32_t *irq_virtio_phandle, uint32_t *msi_pcie_phandle) { - char *clust_name; int socket, phandle_pos; MachineState *ms = MACHINE(s); uint32_t msi_m_phandle = 0, msi_s_phandle = 0; - uint32_t *intc_phandles, xplic_phandles[MAX_NODES]; + uint32_t xplic_phandles[MAX_NODES]; + g_autofree uint32_t *intc_phandles = NULL; int socket_count = riscv_socket_count(ms); qemu_fdt_add_subnode(ms->fdt, "/cpus"); @@ -739,6 +739,7 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, phandle_pos = ms->smp.cpus; for (socket = (socket_count - 1); socket >= 0; socket--) { + g_autofree char *clust_name = NULL; phandle_pos -= s->soc[socket].num_harts; clust_name = g_strdup_printf("/cpus/cpu-map/cluster%d", socket); @@ -749,8 +750,6 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, create_fdt_socket_memory(s, memmap, socket); - g_free(clust_name); - if (tcg_enabled()) { if (s->have_aclint) { create_fdt_socket_aclint(s, memmap, socket, @@ -793,8 +792,6 @@ static void create_fdt_sockets(RISCVVirtState *s, const MemMapEntry *memmap, } } - g_free(intc_phandles); - if (kvm_enabled() && virt_use_kvm_aia(s)) { *irq_mmio_phandle = xplic_phandles[0]; *irq_virtio_phandle = xplic_phandles[0];
Move 'clust_name' inside the loop, and g_autofree, to avoid having to g_free() manually in each loop iteration. 'intc_phandles' is also g_autofreed to avoid another manual g_free(). Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- hw/riscv/virt.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)