Zesen Liu <[email protected]> writes: > When specifying lbr_fmt=VALUE in cpu options with an invalid VALUE, > error_setg() gets triggered twice, causing an assertion failure in > error_setv() which requires *errp to be NULL, preventing meaningful error > messages from being displayed. > > Fix this by checking visit_type_uint64()'s return value and returning early > on failure, consistent with other property setters like set_string(). >
Let's add Fixes: 18c22d7112a7 (qdev-properties: Add a new macro with bitmask check for uint64_t property) Cc: [email protected] > Signed-off-by: Zesen Liu <[email protected]> > --- > hw/core/qdev-properties.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c > index 422a486969..0930d64252 100644 > --- a/hw/core/qdev-properties.c > +++ b/hw/core/qdev-properties.c > @@ -494,7 +494,9 @@ static void set_uint64_checkmask(Object *obj, Visitor *v, > const char *name, > const Property *prop = opaque; > uint64_t *ptr = object_field_prop_ptr(obj, prop); > > - visit_type_uint64(v, name, ptr, errp); > + if (!visit_type_uint64(v, name, ptr, errp)) { > + return; > + } > if (*ptr & ~prop->bitmask) { > error_setg(errp, "Property value for '%s' has bits outside mask > '0x%" PRIx64 "'", > name, prop->bitmask); Reviewed-by: Markus Armbruster <[email protected]> We haven't tagged rc4. I'll post a PR right away, so we have a chance to get this fix into 10.2.
