|
@@ -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)
|