On 6/30/20 11:03 AM, Markus Armbruster wrote: > The Error ** argument must be NULL, &error_abort, &error_fatal, or a > pointer to a variable containing NULL. Passing an argument of the > latter kind twice without clearing it in between is wrong: if the > first call sets an error, it no longer points to NULL for the second > call. > > armsse_realize() is wrong that way: it passes &err to > object_property_set_int() multiple times without checking it, and then > to sysbus_realize(). Harmless, because the former can't actually fail > here. > > Fix by passing &error_abort instead. > > Cc: Peter Maydell <peter.mayd...@linaro.org> > Cc: qemu-...@nongnu.org > Signed-off-by: Markus Armbruster <arm...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/arm/armsse.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c > index c73cc6badf..e2cf43ee0b 100644 > --- a/hw/arm/armsse.c > +++ b/hw/arm/armsse.c > @@ -991,13 +991,13 @@ static void armsse_realize(DeviceState *dev, Error > **errp) > sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysinfo), 0, 0x40020000); > /* System control registers */ > object_property_set_int(OBJECT(&s->sysctl), info->sys_version, > - "SYS_VERSION", &err); > + "SYS_VERSION", &error_abort); > object_property_set_int(OBJECT(&s->sysctl), info->cpuwait_rst, > - "CPUWAIT_RST", &err); > + "CPUWAIT_RST", &error_abort); > object_property_set_int(OBJECT(&s->sysctl), s->init_svtor, > - "INITSVTOR0_RST", &err); > + "INITSVTOR0_RST", &error_abort); > object_property_set_int(OBJECT(&s->sysctl), s->init_svtor, > - "INITSVTOR1_RST", &err); > + "INITSVTOR1_RST", &error_abort); > sysbus_realize(SYS_BUS_DEVICE(&s->sysctl), &err); > if (err) { > error_propagate(errp, err); >