mirror of https://github.com/xemu-project/xemu.git
hw: fix memory leak in IRQState allocation
Ate72a7f65c1
(hw: Move declaration of IRQState to header and add init function, 2024-06-29), we've changed qemu_allocate_irq() to use a combination of g_new() + object_initialize() instead of IRQ(object_new()). The latter sets obj->free, so that that the memory is properly cleaned when the object is finalized, but the former doesn't. Fixes:e72a7f65c1
(hw: Move declaration of IRQState to header and add init function) Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Brian Cain <bcain@quicinc.com> Message-id: 1723deb603afec3fa69a75970cef9aac62d57d62.1726674185.git.quic_mathbern@quicinc.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
a8cc14435e
commit
89d94c0404
|
@ -34,13 +34,19 @@ void qemu_set_irq(qemu_irq irq, int level)
|
|||
irq->handler(irq->opaque, irq->n, level);
|
||||
}
|
||||
|
||||
static void init_irq_fields(IRQState *irq, qemu_irq_handler handler,
|
||||
void *opaque, int n)
|
||||
{
|
||||
irq->handler = handler;
|
||||
irq->opaque = opaque;
|
||||
irq->n = n;
|
||||
}
|
||||
|
||||
void qemu_init_irq(IRQState *irq, qemu_irq_handler handler, void *opaque,
|
||||
int n)
|
||||
{
|
||||
object_initialize(irq, sizeof(*irq), TYPE_IRQ);
|
||||
irq->handler = handler;
|
||||
irq->opaque = opaque;
|
||||
irq->n = n;
|
||||
init_irq_fields(irq, handler, opaque, n);
|
||||
}
|
||||
|
||||
qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old, qemu_irq_handler handler,
|
||||
|
@ -66,11 +72,8 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n)
|
|||
|
||||
qemu_irq qemu_allocate_irq(qemu_irq_handler handler, void *opaque, int n)
|
||||
{
|
||||
IRQState *irq;
|
||||
|
||||
irq = g_new(IRQState, 1);
|
||||
qemu_init_irq(irq, handler, opaque, n);
|
||||
|
||||
IRQState *irq = IRQ(object_new(TYPE_IRQ));
|
||||
init_irq_fields(irq, handler, opaque, n);
|
||||
return irq;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue