* [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties @ 2013-03-16 16:39 Peter Maydell 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists Peter Maydell ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Peter Maydell @ 2013-03-16 16:39 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, patches Detect and abort on duplicate properties in a qdev Property array. This patchset actually dates back to October last year (and got reviewed then, hence Anthony's r-b tags) but it didn't get applied (maybe we were in codefreeze) and I forgot about it. Anyway, I've rebased it so here we are again. Peter Maydell (2): qom: Detect attempts to add a property that already exists hw/qdev: Abort rather than ignoring errors adding device properties hw/qdev.c | 10 +++++++--- qom/object.c | 13 ++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists 2013-03-16 16:39 [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties Peter Maydell @ 2013-03-16 16:39 ` Peter Maydell 2013-03-18 14:39 ` Andreas Färber 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell 2013-03-18 12:41 ` [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate " Paolo Bonzini 2 siblings, 1 reply; 5+ messages in thread From: Peter Maydell @ 2013-03-16 16:39 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, patches Detect attempts to add a property to an object if one of that name already exists, and report them as errors. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> --- qom/object.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/qom/object.c b/qom/object.c index 3d638ff..875315a 100644 --- a/qom/object.c +++ b/qom/object.c @@ -629,7 +629,18 @@ void object_property_add(Object *obj, const char *name, const char *type, ObjectPropertyRelease *release, void *opaque, Error **errp) { - ObjectProperty *prop = g_malloc0(sizeof(*prop)); + ObjectProperty *prop; + + QTAILQ_FOREACH(prop, &obj->properties, node) { + if (strcmp(prop->name, name) == 0) { + error_setg(errp, "attempt to add duplicate property '%s'" + " to object (type '%s')\n", name, + object_get_typename(obj)); + return; + } + } + + prop = g_malloc0(sizeof(*prop)); prop->name = g_strdup(name); prop->type = g_strdup(type); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists Peter Maydell @ 2013-03-18 14:39 ` Andreas Färber 0 siblings, 0 replies; 5+ messages in thread From: Andreas Färber @ 2013-03-18 14:39 UTC (permalink / raw) To: Peter Maydell Cc: Paolo Bonzini, Anthony Liguori, qemu-devel, Markus Armbruster, patches Am 16.03.2013 17:39, schrieb Peter Maydell: > Detect attempts to add a property to an object if one of > that name already exists, and report them as errors. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> > --- > qom/object.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/qom/object.c b/qom/object.c > index 3d638ff..875315a 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -629,7 +629,18 @@ void object_property_add(Object *obj, const char *name, const char *type, > ObjectPropertyRelease *release, > void *opaque, Error **errp) > { > - ObjectProperty *prop = g_malloc0(sizeof(*prop)); > + ObjectProperty *prop; > + > + QTAILQ_FOREACH(prop, &obj->properties, node) { > + if (strcmp(prop->name, name) == 0) { > + error_setg(errp, "attempt to add duplicate property '%s'" > + " to object (type '%s')\n", name, No \n in error_setg(), there was a recent cleanup series. Andreas > + object_get_typename(obj)); > + return; > + } > + } > + > + prop = g_malloc0(sizeof(*prop)); > > prop->name = g_strdup(name); > prop->type = g_strdup(type); > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH v6 2/2] hw/qdev: Abort rather than ignoring errors adding device properties 2013-03-16 16:39 [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties Peter Maydell 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists Peter Maydell @ 2013-03-16 16:39 ` Peter Maydell 2013-03-18 12:41 ` [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate " Paolo Bonzini 2 siblings, 0 replies; 5+ messages in thread From: Peter Maydell @ 2013-03-16 16:39 UTC (permalink / raw) To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, patches Instead of ignoring any errors that occur when adding properties to a new device in device_initfn(), check for them and abort if any occur. The most likely cause is accidentally adding a duplicate property, which is a programming error by the device author. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> --- hw/qdev.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index 0b20280..df9737d 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -711,6 +711,7 @@ static void device_initfn(Object *obj) DeviceState *dev = DEVICE(obj); ObjectClass *class; Property *prop; + Error *err = NULL; if (qdev_hotplug) { dev->hotplugged = 1; @@ -726,15 +727,18 @@ static void device_initfn(Object *obj) class = object_get_class(OBJECT(dev)); do { for (prop = DEVICE_CLASS(class)->props; prop && prop->name; prop++) { - qdev_property_add_legacy(dev, prop, NULL); - qdev_property_add_static(dev, prop, NULL); + qdev_property_add_legacy(dev, prop, &err); + assert_no_error(err); + qdev_property_add_static(dev, prop, &err); + assert_no_error(err); } class = object_class_get_parent(class); } while (class != object_class_by_name(TYPE_DEVICE)); qdev_prop_set_globals(dev); object_property_add_link(OBJECT(dev), "parent_bus", TYPE_BUS, - (Object **)&dev->parent_bus, NULL); + (Object **)&dev->parent_bus, &err); + assert_no_error(err); } /* Unlink device from bus and free the structure. */ -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties 2013-03-16 16:39 [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties Peter Maydell 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists Peter Maydell 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell @ 2013-03-18 12:41 ` Paolo Bonzini 2 siblings, 0 replies; 5+ messages in thread From: Paolo Bonzini @ 2013-03-18 12:41 UTC (permalink / raw) To: Peter Maydell; +Cc: Anthony Liguori, qemu-devel, patches Il 16/03/2013 17:39, Peter Maydell ha scritto: > Detect and abort on duplicate properties in a qdev Property array. > > This patchset actually dates back to October last year (and got > reviewed then, hence Anthony's r-b tags) but it didn't get applied > (maybe we were in codefreeze) and I forgot about it. Anyway, I've > rebased it so here we are again. > > Peter Maydell (2): > qom: Detect attempts to add a property that already exists > hw/qdev: Abort rather than ignoring errors adding device properties > > hw/qdev.c | 10 +++++++--- > qom/object.c | 13 ++++++++++++- > 2 files changed, 19 insertions(+), 4 deletions(-) > Acked-by: Paolo Bonzini <pbonzini@redhat.com> Paolo ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-03-18 14:40 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-03-16 16:39 [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate device properties Peter Maydell 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 1/2] qom: Detect attempts to add a property that already exists Peter Maydell 2013-03-18 14:39 ` Andreas Färber 2013-03-16 16:39 ` [Qemu-devel] [PATCH v6 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell 2013-03-18 12:41 ` [Qemu-devel] [PATCH v6 0/2] qdev: Detect duplicate " Paolo Bonzini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).