* [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
* [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
* 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
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).