diff options
author | Igor Mammedov <imammedo@redhat.com> | 2017-07-14 10:14:50 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2017-07-14 12:04:42 +0200 |
commit | 8f5d58ef2c92d7b82d9a6eeefd7c8854a183ba4a (patch) | |
tree | e2829b8ca3d04cdee2f37cc1a01419786ac494c9 /include | |
parent | d40d3da00c10f0169a26985ecb65033bff536f2c (diff) | |
download | qemu-8f5d58ef2c92d7b82d9a6eeefd7c8854a183ba4a.zip qemu-8f5d58ef2c92d7b82d9a6eeefd7c8854a183ba4a.tar.gz qemu-8f5d58ef2c92d7b82d9a6eeefd7c8854a183ba4a.tar.bz2 |
qom: enforce readonly nature of link's check callback
link's check callback is supposed to verify/permit setting it,
however currently nothing restricts it from misusing it
and modifying target object from within.
Make sure that readonly semantics are checked by compiler
to prevent callback's misuse.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Message-Id: <20170714021509.23681-2-famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/hw/qdev-properties.h | 3 | ||||
-rw-r--r-- | include/qom/object.h | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index 0604c33..9edded2 100644 --- a/include/hw/qdev-properties.h +++ b/include/hw/qdev-properties.h @@ -272,7 +272,8 @@ void qdev_prop_set_after_realize(DeviceState *dev, const char *name, * This function should be used as the check() argument to * object_property_add_link(). */ -void qdev_prop_allow_set_link_before_realize(Object *obj, const char *name, +void qdev_prop_allow_set_link_before_realize(const Object *obj, + const char *name, Object *val, Error **errp); #endif diff --git a/include/qom/object.h b/include/qom/object.h index abaeb8c..1b82899 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -764,7 +764,7 @@ ObjectClass *object_get_class(Object *obj); * * Returns: The QOM typename of @obj. */ -const char *object_get_typename(Object *obj); +const char *object_get_typename(const Object *obj); /** * type_register_static: @@ -1319,7 +1319,7 @@ typedef enum { * callback function. It allows the link property to be set and never returns * an error. */ -void object_property_allow_set_link(Object *, const char *, +void object_property_allow_set_link(const Object *, const char *, Object *, Error **); /** @@ -1352,7 +1352,7 @@ void object_property_allow_set_link(Object *, const char *, */ void object_property_add_link(Object *obj, const char *name, const char *type, Object **child, - void (*check)(Object *obj, const char *name, + void (*check)(const Object *obj, const char *name, Object *val, Error **errp), ObjectPropertyLinkFlags flags, Error **errp); |