qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).