From: Bui Quang Minh <minhquangbui99@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [PATCH] hw/intc/apic: fix memory leak
Date: Tue, 5 Mar 2024 16:12:31 +0700 [thread overview]
Message-ID: <50c2e720-454b-49bb-acb8-696e86695dc6@gmail.com> (raw)
In-Reply-To: <20240304224133.267640-1-pbonzini@redhat.com>
On 3/5/24 05:41, Paolo Bonzini wrote:
> deliver_bitmask is allocated on the heap in apic_deliver(), but there
> are many paths in the function that return before the corresponding
> g_free() is reached. Fix this by switching to g_autofree and, while at
> it, also switch to g_new. Do the same in apic_deliver_irq() as well
> for consistency.
>
> Fixes: b5ee0468e9d ("apic: add support for x2APIC mode", 2024-02-14)
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> hw/intc/apic.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> index 1d887d66b86..4186c57b34c 100644
> --- a/hw/intc/apic.c
> +++ b/hw/intc/apic.c
> @@ -291,14 +291,13 @@ static void apic_deliver_irq(uint32_t dest, uint8_t dest_mode,
> uint8_t delivery_mode, uint8_t vector_num,
> uint8_t trigger_mode)
> {
> - uint32_t *deliver_bitmask = g_malloc(max_apic_words * sizeof(uint32_t));
> + g_autofree uint32_t *deliver_bitmask = g_new(uint32_t, max_apic_words);
>
> trace_apic_deliver_irq(dest, dest_mode, delivery_mode, vector_num,
> trigger_mode);
>
> apic_get_delivery_bitmask(deliver_bitmask, dest, dest_mode);
> apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
> - g_free(deliver_bitmask);
> }
>
> bool is_x2apic_mode(DeviceState *dev)
> @@ -662,7 +661,7 @@ static void apic_deliver(DeviceState *dev, uint32_t dest, uint8_t dest_mode,
> APICCommonState *s = APIC(dev);
> APICCommonState *apic_iter;
> uint32_t deliver_bitmask_size = max_apic_words * sizeof(uint32_t);
> - uint32_t *deliver_bitmask = g_malloc(deliver_bitmask_size);
> + g_autofree uint32_t *deliver_bitmask = g_new(uint32_t, max_apic_words);
> uint32_t current_apic_id;
>
> if (is_x2apic_mode(dev)) {
> @@ -708,7 +707,6 @@ static void apic_deliver(DeviceState *dev, uint32_t dest, uint8_t dest_mode,
> }
>
> apic_bus_deliver(deliver_bitmask, delivery_mode, vector_num, trigger_mode);
> - g_free(deliver_bitmask);
> }
>
> static bool apic_check_pic(APICCommonState *s)
Reviewed-by: Bui Quang Minh <minhquangbui99@gmail.com>
Thanks,
Quang Minh.
next prev parent reply other threads:[~2024-03-05 9:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-04 22:41 [PATCH] hw/intc/apic: fix memory leak Paolo Bonzini
2024-03-05 9:09 ` Philippe Mathieu-Daudé
2024-03-05 9:12 ` Bui Quang Minh [this message]
2024-03-05 13:21 ` Alex Bennée
2024-03-08 8:15 ` Philippe Mathieu-Daudé
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=50c2e720-454b-49bb-acb8-696e86695dc6@gmail.com \
--to=minhquangbui99@gmail.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.