qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] object_del: Prevent removing an in-use memory backend object
@ 2015-03-20  4:14 Lin Ma
  2015-03-20 10:17 ` Igor Mammedov
  0 siblings, 1 reply; 4+ messages in thread
From: Lin Ma @ 2015-03-20  4:14 UTC (permalink / raw)
  To: qemu-devel, imammedo; +Cc: pbonzini, Lin Ma

showing a memory device whose memdev is removed leads an assert:

(qemu) object_add memory-backend-ram,id=ram0,size=128M
(qemu) device_add pc-dimm,id=d0,memdev=ram0
(qemu) object_del ram0
(qemu) info memory-devices
**
ERROR:qom/object.c:1274:object_get_canonical_path_component:\
                            assertion failed: (obj->parent != NULL)
Aborted

The patch prevents removing an in-use mem backend and outputs an error msg.

Signed-off-by: Lin Ma <lma@suse.com>
---
 qmp.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/qmp.c b/qmp.c
index c479e77..0086e2d 100644
--- a/qmp.c
+++ b/qmp.c
@@ -704,6 +704,7 @@ void qmp_object_del(const char *id, Error **errp)
 {
     Object *container;
     Object *obj;
+    const char *typename;
 
     container = container_get(object_get_root(), "/objects");
     obj = object_resolve_path_component(container, id);
@@ -711,6 +712,19 @@ void qmp_object_del(const char *id, Error **errp)
         error_setg(errp, "object id not found");
         return;
     }
+
+    typename = object_class_get_name(object_class_get_parent(\
+                                        object_get_class(OBJECT(obj))));
+    if (strcmp(typename, TYPE_MEMORY_BACKEND) == 0 ) {
+        MemoryRegion *mr;
+        mr = host_memory_backend_get_memory(MEMORY_BACKEND(obj), errp);
+        if (memory_region_is_mapped(mr)) {
+            char *path = object_get_canonical_path_component(obj);
+            error_setg(errp, "memdev %s is in used.", path);
+            g_free(path);
+            return;
+        }
+    }
     object_unparent(obj);
 }
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-03-23  9:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-20  4:14 [Qemu-devel] [PATCH] object_del: Prevent removing an in-use memory backend object Lin Ma
2015-03-20 10:17 ` Igor Mammedov
2015-03-23  8:52   ` Lin Ma
2015-03-23  9:29   ` [Qemu-devel] 答复: " Lin Ma

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