summary refs log tree commit diff stats
path: root/hw/intc
diff options
context:
space:
mode:
authorZhao Liu <zhao1.liu@intel.com>2024-02-23 16:56:53 +0800
committerThomas Huth <thuth@redhat.com>2024-03-12 11:45:33 +0100
commit4a9fafb478b5d9e6977d0c422f25062550ebce3a (patch)
treed5632decfb6029dda39ffb13b4fd4d984fcbe29b /hw/intc
parent8cb84d7d6bd1f3aa66663553c6b4de3855cea4d9 (diff)
downloadfocaccia-qemu-4a9fafb478b5d9e6977d0c422f25062550ebce3a.tar.gz
focaccia-qemu-4a9fafb478b5d9e6977d0c422f25062550ebce3a.zip
hw/intc: Check @errp to handle the error of IOAPICCommonClass.realize()
IOAPICCommonClass implements its own private realize(), and this private
realize() allows error.

Since IOAPICCommonClass.realize() returns void, to check the error,
dereference @errp with ERRP_GUARD().

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240223085653.1255438-8-zhao1.liu@linux.intel.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'hw/intc')
-rw-r--r--hw/intc/ioapic_common.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/intc/ioapic_common.c b/hw/intc/ioapic_common.c
index cb9bf62146..efbe6958c8 100644
--- a/hw/intc/ioapic_common.c
+++ b/hw/intc/ioapic_common.c
@@ -152,6 +152,7 @@ static int ioapic_dispatch_post_load(void *opaque, int version_id)
 
 static void ioapic_common_realize(DeviceState *dev, Error **errp)
 {
+    ERRP_GUARD();
     IOAPICCommonState *s = IOAPIC_COMMON(dev);
     IOAPICCommonClass *info;
 
@@ -162,6 +163,9 @@ static void ioapic_common_realize(DeviceState *dev, Error **errp)
 
     info = IOAPIC_COMMON_GET_CLASS(s);
     info->realize(dev, errp);
+    if (*errp) {
+        return;
+    }
 
     sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io_memory);
     ioapic_no++;