Re: [Qemu-devel] [PATCH 2/2] qom: fix device hot-unplug

2012-03-10 Thread Andreas Färber
Am 28.02.2012 09:54, schrieb Paolo Bonzini:
 Property removal modifies the list, so it is not safe to continue
 iteration.  We know anyway that each object can have only one
 parent (see object_property_add_child), so exit after finding
 the requested object.
 
 Reported-by: Michael S. Tsirkin m...@redhat.com
 Signed-off-by: Paolo Bonzini pbonz...@redhat.com
 ---
  qom/object.c |7 ++-
  1 files changed, 2 insertions(+), 5 deletions(-)
 
 diff --git a/qom/object.c b/qom/object.c
 index aa037d2..39cbcb9 100644
 --- a/qom/object.c
 +++ b/qom/object.c
 @@ -304,12 +304,9 @@ static void object_property_del_child(Object *obj, 
 Object *child, Error **errp)
  ObjectProperty *prop;
  
  QTAILQ_FOREACH(prop, obj-properties, node) {
 -if (!strstart(prop-type, child, NULL)) {
 -continue;
 -}
 -
 -if (prop-opaque == child) {
 +if (strstart(prop-type, child, NULL)  prop-opaque == child) {

Didn't someone post a patch introducing an object_property_is_child() or
so? Would be handy here.

Otherwise looks okay.

Andreas

  object_property_del(obj, prop-name, errp);
 +break;
  }
  }
  }

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



[Qemu-devel] [PATCH 2/2] qom: fix device hot-unplug

2012-02-28 Thread Paolo Bonzini
Property removal modifies the list, so it is not safe to continue
iteration.  We know anyway that each object can have only one
parent (see object_property_add_child), so exit after finding
the requested object.

Reported-by: Michael S. Tsirkin m...@redhat.com
Signed-off-by: Paolo Bonzini pbonz...@redhat.com
---
 qom/object.c |7 ++-
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index aa037d2..39cbcb9 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -304,12 +304,9 @@ static void object_property_del_child(Object *obj, Object 
*child, Error **errp)
 ObjectProperty *prop;
 
 QTAILQ_FOREACH(prop, obj-properties, node) {
-if (!strstart(prop-type, child, NULL)) {
-continue;
-}
-
-if (prop-opaque == child) {
+if (strstart(prop-type, child, NULL)  prop-opaque == child) {
 object_property_del(obj, prop-name, errp);
+break;
 }
 }
 }
-- 
1.7.7.6