@samitouri / QOSamiQemu / commits / caa5d82570

hw/misc/riscv_cpc: Free CPU array in instance_finalize

The TYPE_RISCV_CPC device allocates an array in its instance_init, but does not free this, leading to leaks like this from QOM/QMP introspection: Direct leak of 512 byte in 1 object allocated from: #0 in calloc #1 in g_malloc0 #2 in riscv_cpc_init /home/pm215/qemu/build/san/../../hw/misc/riscv_cpc.c:175:15 #3 in object_initialize_with_type /home/pm215/qemu/build/san/../../qom/object.c:570:5 #4 in object_new_with_type /home/pm215/qemu/build/san/../../qom/object.c:774:5 #5 in qmp_device_list_properties /home/pm215/qemu/build/san/../../qom/qom-qmp-cmds.c:206:11 #6 in qdev_device_help /home/pm215/qemu/build/san/../../system/qdev-monitor.c:313:17 #7 in hmp_device_add /home/pm215/qemu/build/san/../../system/qdev-monitor.c:1005:9 Free the array in instance_finalize. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20260309095328.1406779-1-peter.maydell@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Peter Maydell committed Mar 9, 2026 at 09:53 UTC caa5d8257037201f4e546ec833e51863ae07b331
1 file changed +8
hw/misc/riscv_cpc.c
+8
@@ -185,6 +185,13 @@ static void riscv_cpc_init(Object *obj)
185 }
186 }
187
188 +static void riscv_cpc_finalize(Object *obj)
189 +{
190 + RISCVCPCState *s = RISCV_CPC(obj);
191 +
192 + g_free(s->cpus);
193 +}
194 +
195 static void riscv_cpc_realize(DeviceState *dev, Error **errp)
196 {
197 RISCVCPCState *s = RISCV_CPC(dev);
@@ -254,6 +261,7 @@ static const TypeInfo riscv_cpc_info = {
261 .parent = TYPE_SYS_BUS_DEVICE,
262 .instance_size = sizeof(RISCVCPCState),
263 .instance_init = riscv_cpc_init,
264 + .instance_finalize = riscv_cpc_finalize,
265 .class_init = riscv_cpc_class_init,
266 };
267