s390x/cpumodel: Fix feature property error API violations
s390x-cpu property setters set_feature() and set_feature_group()
dereference @errp when the visitor fails. That's wrong; see the big
comment in error.h. Introduced in commit 0754f60429
"s390x/cpumodel:
expose features and feature groups as properties".
No caller actually passes null.
Fix anyway: splice in a local Error *err, and error_propagate().
Cc: David Hildenbrand <david@redhat.com>
Cc: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Message-Id: <20191204093625.14836-13-armbru@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
3d508334dd
commit
0325e5a37b
|
@ -987,6 +987,7 @@ static void get_feature(Object *obj, Visitor *v, const char *name,
|
||||||
static void set_feature(Object *obj, Visitor *v, const char *name,
|
static void set_feature(Object *obj, Visitor *v, const char *name,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
{
|
{
|
||||||
|
Error *err = NULL;
|
||||||
S390Feat feat = (S390Feat) opaque;
|
S390Feat feat = (S390Feat) opaque;
|
||||||
DeviceState *dev = DEVICE(obj);
|
DeviceState *dev = DEVICE(obj);
|
||||||
S390CPU *cpu = S390_CPU(obj);
|
S390CPU *cpu = S390_CPU(obj);
|
||||||
|
@ -1002,8 +1003,9 @@ static void set_feature(Object *obj, Visitor *v, const char *name,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
visit_type_bool(v, name, &value, errp);
|
visit_type_bool(v, name, &value, &err);
|
||||||
if (*errp) {
|
if (err) {
|
||||||
|
error_propagate(errp, err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (value) {
|
if (value) {
|
||||||
|
@ -1043,6 +1045,7 @@ static void get_feature_group(Object *obj, Visitor *v, const char *name,
|
||||||
static void set_feature_group(Object *obj, Visitor *v, const char *name,
|
static void set_feature_group(Object *obj, Visitor *v, const char *name,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
{
|
{
|
||||||
|
Error *err = NULL;
|
||||||
S390FeatGroup group = (S390FeatGroup) opaque;
|
S390FeatGroup group = (S390FeatGroup) opaque;
|
||||||
const S390FeatGroupDef *def = s390_feat_group_def(group);
|
const S390FeatGroupDef *def = s390_feat_group_def(group);
|
||||||
DeviceState *dev = DEVICE(obj);
|
DeviceState *dev = DEVICE(obj);
|
||||||
|
@ -1059,8 +1062,9 @@ static void set_feature_group(Object *obj, Visitor *v, const char *name,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
visit_type_bool(v, name, &value, errp);
|
visit_type_bool(v, name, &value, &err);
|
||||||
if (*errp) {
|
if (err) {
|
||||||
|
error_propagate(errp, err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (value) {
|
if (value) {
|
||||||
|
|
Loading…
Reference in New Issue