On Wed, Feb 26, 2020 at 6:37 PM Pan Nengyuan <pannengy...@huawei.com> wrote: > > There are some memleaks when we call 'device_list_properties'. This patch > move timer_new from init into realize to fix it. > > Reported-by: Euler Robot <euler.ro...@huawei.com> > Signed-off-by: Pan Nengyuan <pannengy...@huawei.com>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > Cc: "Edgar E. Iglesias" <edgar.igles...@gmail.com> > Cc: Alistair Francis <alist...@alistair23.me> > --- > hw/timer/cadence_ttc.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c > index 5e3128c1e3..b0ba6b2bba 100644 > --- a/hw/timer/cadence_ttc.c > +++ b/hw/timer/cadence_ttc.c > @@ -412,16 +412,21 @@ static void cadence_timer_init(uint32_t freq, > CadenceTimerState *s) > static void cadence_ttc_init(Object *obj) > { > CadenceTTCState *s = CADENCE_TTC(obj); > + > + memory_region_init_io(&s->iomem, obj, &cadence_ttc_ops, s, > + "timer", 0x1000); > + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem); > +} > + > +static void cadence_ttc_realize(DeviceState *dev, Error **errp) > +{ > + CadenceTTCState *s = CADENCE_TTC(dev); > int i; > > for (i = 0; i < 3; ++i) { > cadence_timer_init(133000000, &s->timer[i]); > - sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->timer[i].irq); > + sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->timer[i].irq); > } > - > - memory_region_init_io(&s->iomem, obj, &cadence_ttc_ops, s, > - "timer", 0x1000); > - sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem); > } > > static int cadence_timer_pre_save(void *opaque) > @@ -479,6 +484,7 @@ static void cadence_ttc_class_init(ObjectClass *klass, > void *data) > DeviceClass *dc = DEVICE_CLASS(klass); > > dc->vmsd = &vmstate_cadence_ttc; > + dc->realize = cadence_ttc_realize; > } > > static const TypeInfo cadence_ttc_info = { > -- > 2.18.2 > >