]> Git Repo - qemu.git/commitdiff
s390x/cpumodel: Fix feature property error API violations
authorMarkus Armbruster <[email protected]>
Wed, 4 Dec 2019 09:36:19 +0000 (10:36 +0100)
committerCornelia Huck <[email protected]>
Sat, 14 Dec 2019 09:25:50 +0000 (10:25 +0100)
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 <[email protected]>
Cc: Cornelia Huck <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: David Hildenbrand <[email protected]>
Message-Id: <20191204093625[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
target/s390x/cpu_models.c

index 7e92fb2e156da09022959c685c3c393c4edc5839..6a29fd3ab113044d31cc7c05e61c5c128d95d45f 100644 (file)
@@ -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,
                         void *opaque, Error **errp)
 {
+    Error *err = NULL;
     S390Feat feat = (S390Feat) opaque;
     DeviceState *dev = DEVICE(obj);
     S390CPU *cpu = S390_CPU(obj);
@@ -1002,8 +1003,9 @@ static void set_feature(Object *obj, Visitor *v, const char *name,
         return;
     }
 
-    visit_type_bool(v, name, &value, errp);
-    if (*errp) {
+    visit_type_bool(v, name, &value, &err);
+    if (err) {
+        error_propagate(errp, err);
         return;
     }
     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,
                               void *opaque, Error **errp)
 {
+    Error *err = NULL;
     S390FeatGroup group = (S390FeatGroup) opaque;
     const S390FeatGroupDef *def = s390_feat_group_def(group);
     DeviceState *dev = DEVICE(obj);
@@ -1059,8 +1062,9 @@ static void set_feature_group(Object *obj, Visitor *v, const char *name,
         return;
     }
 
-    visit_type_bool(v, name, &value, errp);
-    if (*errp) {
+    visit_type_bool(v, name, &value, &err);
+    if (err) {
+        error_propagate(errp, err);
         return;
     }
     if (value) {
This page took 0.028232 seconds and 4 git commands to generate.