* [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties
@ 2013-03-25 13:15 Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 1/2] qom: Detect attempts to add a property that already exists Peter Maydell
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Peter Maydell @ 2013-03-25 13:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, Andreas Färber, 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.
Changes v6->v7: trivial, just removed stray newline from
end of error_setg() string.
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] 4+ messages in thread
* [Qemu-devel] [PATCH v7 1/2] qom: Detect attempts to add a property that already exists
2013-03-25 13:15 [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties Peter Maydell
@ 2013-03-25 13:15 ` Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell
2013-03-26 18:33 ` [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate " Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2013-03-25 13:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, Andreas Färber, 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>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
qom/object.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/qom/object.c b/qom/object.c
index 3d638ff..3f77968 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')", 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] 4+ messages in thread
* [Qemu-devel] [PATCH v7 2/2] hw/qdev: Abort rather than ignoring errors adding device properties
2013-03-25 13:15 [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 1/2] qom: Detect attempts to add a property that already exists Peter Maydell
@ 2013-03-25 13:15 ` Peter Maydell
2013-03-26 18:33 ` [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate " Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2013-03-25 13:15 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, Andreas Färber, 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>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/qdev.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/hw/qdev.c b/hw/qdev.c
index 708a058..909c405 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -710,6 +710,7 @@ static void device_initfn(Object *obj)
DeviceState *dev = DEVICE(obj);
ObjectClass *class;
Property *prop;
+ Error *err = NULL;
if (qdev_hotplug) {
dev->hotplugged = 1;
@@ -725,15 +726,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] 4+ messages in thread
* Re: [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties
2013-03-25 13:15 [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 1/2] qom: Detect attempts to add a property that already exists Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell
@ 2013-03-26 18:33 ` Anthony Liguori
2 siblings, 0 replies; 4+ messages in thread
From: Anthony Liguori @ 2013-03-26 18:33 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, None, patches
Applied. Thanks.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-03-26 18:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-25 13:15 [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate device properties Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 1/2] qom: Detect attempts to add a property that already exists Peter Maydell
2013-03-25 13:15 ` [Qemu-devel] [PATCH v7 2/2] hw/qdev: Abort rather than ignoring errors adding device properties Peter Maydell
2013-03-26 18:33 ` [Qemu-devel] [PATCH v7 0/2] qdev: Detect duplicate " Anthony Liguori
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).