From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
qemu-stable@nongnu.org, "Song Gao" <gaosong@loongson.cn>
Subject: [PULL 04/28] hw/intc/loongson_ipi: Fix resource leak
Date: Tue, 23 Jul 2024 22:38:31 +0200 [thread overview]
Message-ID: <20240723203855.65033-5-philmd@linaro.org> (raw)
In-Reply-To: <20240723203855.65033-1-philmd@linaro.org>
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
next prev parent reply other threads:[~2024-07-23 20:41 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-23 20:38 [PULL 00/28] Misc HW+ patches for 2024-07-23 Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 01/28] accel: Restrict probe_access*() functions to TCG Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 02/28] hw/i386/intel_iommu: Extract device IOTLB invalidation logic Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 03/28] hw/intc/loongson_ipi: Access memory in little endian Philippe Mathieu-Daudé
2024-07-23 20:38 ` Philippe Mathieu-Daudé [this message]
2024-07-23 20:38 ` [PULL 05/28] hw/intc/loongson_ipi: Declare QOM types using DEFINE_TYPES() macro Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 06/28] docs: Correct Loongarch -> LoongArch Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 07/28] docs/interop/firmware.json: add new enum FirmwareFormat Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 08/28] docs/interop/firmware.json: add new enum FirmwareArchitecture Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 09/28] docs/interop/firmware.json: convert "Example" section Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 10/28] hw/i2c/mpc_i2c: Fix mmio region size Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 11/28] hw/mips/loongson3_virt: remove useless type cast Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 12/28] util/range: Make ranges_overlap() return bool Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 13/28] cxl/mailbox: make range overlap check more readable Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 14/28] sparc/ldst_helper: " Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 15/28] system/memory_mapping: " Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 16/28] crypto/block-luks: " Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 17/28] dump: " Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 18/28] hw/nubus/virtio-mmio: Fix missing ERRP_GUARD() in realize handler Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 19/28] hw/char/goldfish: Use DMA memory API Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 20/28] chardev/char-fe: Document returned value on error Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 21/28] util/fifo8: Fix style Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 22/28] util/fifo8: Use fifo8_reset() in fifo8_create() Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 23/28] util/fifo8: Rename fifo8_peek_buf() -> fifo8_peek_bufptr() Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 24/28] util/fifo8: Rename fifo8_pop_buf() -> fifo8_pop_bufptr() Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 25/28] util/fifo8: Expose fifo8_pop_buf() Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 26/28] util/fifo8: Introduce fifo8_drop() Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 27/28] MAINTAINERS: Cover guest-agent in QAPI schema Philippe Mathieu-Daudé
2024-07-23 20:38 ` [PULL 28/28] MAINTAINERS: Add myself as a reviewer of machine core Philippe Mathieu-Daudé
2024-07-24 8:14 ` [PULL 00/28] Misc HW+ patches for 2024-07-23 Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240723203855.65033-5-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=gaosong@loongson.cn \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).