diff mbox series

[v5,3/4] hw/misc/macio: fix incorrect creation of mos6522's subclasses

Message ID 20200314084730.25876-4-pannengyuan@huawei.com (mailing list archive)
State New, archived
Headers show
Series delay timer_new from init to realize to fix memleaks. | expand

Commit Message

Pan Nengyuan March 14, 2020, 8:47 a.m. UTC
There are two other places where we create mos6522's subclasses but forgot to realize
it. This patch do the realize in these places to fix that.

Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
---
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-ppc@nongnu.org
---
v5:
- Also fix incorrect creation of mos6522's subclasses on two other places.
  Not sure if there is a conversion plan, we still keep sysbus_init_child_obj in init()
  in this patch as it was.
---
 hw/misc/macio/cuda.c | 11 +++++++++--
 hw/misc/macio/pmu.c  | 11 +++++++++--
 2 files changed, 18 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index e0cc0aac5d..ee780a8288 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -36,6 +36,7 @@ 
 #include "qemu/cutils.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
+#include "qapi/error.h"
 #include "trace.h"
 
 /* Bits in B data register: all active low */
@@ -524,11 +525,17 @@  static void cuda_realize(DeviceState *dev, Error **errp)
     CUDAState *s = CUDA(dev);
     SysBusDevice *sbd;
     MOS6522State *ms;
-    DeviceState *d;
+    DeviceState *d = DEVICE(&s->mos6522_cuda);
     struct tm tm;
+    Error *err = NULL;
+
+    object_property_set_bool(OBJECT(d), true, "realized", &err);
+    if (err != NULL) {
+        error_propagate(errp, err);
+        return;
+    }
 
     /* Pass IRQ from 6522 */
-    d = DEVICE(&s->mos6522_cuda);
     ms = MOS6522(d);
     sbd = SYS_BUS_DEVICE(s);
     sysbus_pass_irq(sbd, SYS_BUS_DEVICE(ms));
diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
index b8466a4a3f..ae55992288 100644
--- a/hw/misc/macio/pmu.c
+++ b/hw/misc/macio/pmu.c
@@ -43,6 +43,7 @@ 
 #include "qemu/cutils.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
+#include "qapi/error.h"
 #include "trace.h"
 
 
@@ -741,11 +742,17 @@  static void pmu_realize(DeviceState *dev, Error **errp)
     PMUState *s = VIA_PMU(dev);
     SysBusDevice *sbd;
     MOS6522State *ms;
-    DeviceState *d;
+    DeviceState *d = DEVICE(&s->mos6522_pmu);;
     struct tm tm;
+    Error *err = NULL;
+
+    object_property_set_bool(OBJECT(d), true, "realized", &err);
+    if (err != NULL) {
+        error_propagate(errp, err);
+        return;
+    }
 
     /* Pass IRQ from 6522 */
-    d = DEVICE(&s->mos6522_pmu);
     ms = MOS6522(d);
     sbd = SYS_BUS_DEVICE(s);
     sysbus_pass_irq(sbd, SYS_BUS_DEVICE(ms));