diff options
| author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2018-05-31 21:51:17 +0200 |
|---|---|---|
| committer | Gerd Hoffmann <kraxel@redhat.com> | 2018-06-12 12:07:30 +0200 |
| commit | 265b578c584b1a86c7028790deaa2f4392dd0a65 (patch) | |
| tree | 193f6032791f9c2836fb9508cbbd755a1fab25b7 /hw/core/qdev-properties.c | |
| parent | f3d58385a6d3d82f65db602c5506e2d3d8c82394 (diff) | |
| download | focaccia-qemu-265b578c584b1a86c7028790deaa2f4392dd0a65.tar.gz focaccia-qemu-265b578c584b1a86c7028790deaa2f4392dd0a65.zip | |
object: fix OBJ_PROP_LINK_UNREF_ON_RELEASE ambivalence
A link property can be set during creation, with object_property_add_link() and later with object_property_set_link(). add_link() doesn't add a reference to the target object, while set_link() does. Furthemore, OBJ_PROP_LINK_UNREF_ON_RELEASE flags, set during add_link, says whether a reference must be released when the property is destroyed. This can lead to leaks if the property was later set_link(), as the added reference is never released. Instead, rename OBJ_PROP_LINK_UNREF_ON_RELEASE to OBJ_PROP_LINK_STRONG and use that has an indication on how the link handle reference management in set_link(). Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-id: 20180531195119.22021-3-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/core/qdev-properties.c')
| -rw-r--r-- | hw/core/qdev-properties.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 989778ab7f..35072dec1e 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -1308,7 +1308,7 @@ static void create_link_property(Object *obj, Property *prop, Error **errp) object_property_add_link(obj, prop->name, prop->link_type, child, qdev_prop_allow_set_link_before_realize, - OBJ_PROP_LINK_UNREF_ON_RELEASE, + OBJ_PROP_LINK_STRONG, errp); } |