[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/28] hw/intc/loongson_ipi: Fix resource leak
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 04/28] hw/intc/loongson_ipi: Fix resource leak |
Date: |
Tue, 23 Jul 2024 22:38:31 +0200 |
Once initialised, QOM objects can be realized and
unrealized multiple times before being finalized.
Resources allocated in REALIZE must be deallocated
in an equivalent UNREALIZE handler.
Free the CPU array in loongson_ipi_unrealize()
instead of loongson_ipi_finalize().
Cc: qemu-stable@nongnu.org
Fixes: 5e90b8db382 ("hw/loongarch: Set iocsr address space per-board rather
than percpu")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240723111405.14208-3-philmd@linaro.org>
---
hw/intc/loongson_ipi.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/hw/intc/loongson_ipi.c b/hw/intc/loongson_ipi.c
index e7979dbdd8b..4013f81745e 100644
--- a/hw/intc/loongson_ipi.c
+++ b/hw/intc/loongson_ipi.c
@@ -318,6 +318,13 @@ static void loongson_ipi_realize(DeviceState *dev, Error
**errp)
}
}
+static void loongson_ipi_unrealize(DeviceState *dev)
+{
+ LoongsonIPI *s = LOONGSON_IPI(dev);
+
+ g_free(s->cpu);
+}
+
static const VMStateDescription vmstate_ipi_core = {
.name = "ipi-single",
.version_id = 2,
@@ -353,23 +360,16 @@ static void loongson_ipi_class_init(ObjectClass *klass,
void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
dc->realize = loongson_ipi_realize;
+ dc->unrealize = loongson_ipi_unrealize;
device_class_set_props(dc, ipi_properties);
dc->vmsd = &vmstate_loongson_ipi;
}
-static void loongson_ipi_finalize(Object *obj)
-{
- LoongsonIPI *s = LOONGSON_IPI(obj);
-
- g_free(s->cpu);
-}
-
static const TypeInfo loongson_ipi_info = {
.name = TYPE_LOONGSON_IPI,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(LoongsonIPI),
.class_init = loongson_ipi_class_init,
- .instance_finalize = loongson_ipi_finalize,
};
static void loongson_ipi_register_types(void)
--
2.41.0
- [PULL 00/28] Misc HW+ patches for 2024-07-23, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 01/28] accel: Restrict probe_access*() functions to TCG, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 02/28] hw/i386/intel_iommu: Extract device IOTLB invalidation logic, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 03/28] hw/intc/loongson_ipi: Access memory in little endian, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 04/28] hw/intc/loongson_ipi: Fix resource leak,
Philippe Mathieu-Daudé <=
- [PULL 05/28] hw/intc/loongson_ipi: Declare QOM types using DEFINE_TYPES() macro, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 06/28] docs: Correct Loongarch -> LoongArch, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 07/28] docs/interop/firmware.json: add new enum FirmwareFormat, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 08/28] docs/interop/firmware.json: add new enum FirmwareArchitecture, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 09/28] docs/interop/firmware.json: convert "Example" section, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 10/28] hw/i2c/mpc_i2c: Fix mmio region size, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 11/28] hw/mips/loongson3_virt: remove useless type cast, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 12/28] util/range: Make ranges_overlap() return bool, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 15/28] system/memory_mapping: make range overlap check more readable, Philippe Mathieu-Daudé, 2024/07/23
- [PULL 14/28] sparc/ldst_helper: make range overlap check more readable, Philippe Mathieu-Daudé, 2024/07/23