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>
This commit is contained in:
Zhao Liu 2024-02-23 16:56:53 +08:00 committed by Thomas Huth
parent 8cb84d7d6b
commit 4a9fafb478
1 changed files with 4 additions and 0 deletions

View File

@ -152,6 +152,7 @@ static int ioapic_dispatch_post_load(void *opaque, int version_id)
static void ioapic_common_realize(DeviceState *dev, Error **errp) static void ioapic_common_realize(DeviceState *dev, Error **errp)
{ {
ERRP_GUARD();
IOAPICCommonState *s = IOAPIC_COMMON(dev); IOAPICCommonState *s = IOAPIC_COMMON(dev);
IOAPICCommonClass *info; IOAPICCommonClass *info;
@ -162,6 +163,9 @@ static void ioapic_common_realize(DeviceState *dev, Error **errp)
info = IOAPIC_COMMON_GET_CLASS(s); info = IOAPIC_COMMON_GET_CLASS(s);
info->realize(dev, errp); info->realize(dev, errp);
if (*errp) {
return;
}
sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io_memory); sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io_memory);
ioapic_no++; ioapic_no++;