do_configure_accelerator() runs after qemu_create_machine(), so
current_machine is available.  Give the AccelState singleton a
canonical path at /machine/accel and drop the floating caller
reference; on init failure, unparent instead of unref.

Assisted-by: Kiro
Signed-off-by: Alexander Graf <[email protected]>
---
 accel/accel-system.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/accel/accel-system.c b/accel/accel-system.c
index 9176665202..987c982c16 100644
--- a/accel/accel-system.c
+++ b/accel/accel-system.c
@@ -41,12 +41,14 @@ int accel_init_machine(AccelState *accel, MachineState *ms)
     AccelClass *acc = ACCEL_GET_CLASS(accel);
     int ret;
     ms->accelerator = accel;
+    object_property_add_child(OBJECT(ms), "accel", OBJECT(accel));
+    object_unref(OBJECT(accel));
     *(acc->allowed) = true;
     ret = acc->init_machine(accel, ms);
     if (ret < 0) {
         ms->accelerator = NULL;
         *(acc->allowed) = false;
-        object_unref(OBJECT(accel));
+        object_unparent(OBJECT(accel));
     } else {
         object_set_accelerator_compat_props(acc->compat_props);
     }
-- 
2.47.1


Reply via email to