On Mon, Nov 28, 2016 at 05:49:04PM -0800, Li Qiang wrote: > From: Li Qiang <liqiang...@360.cn> > > When the Intel 6300ESB watchdog is hot unplug. The timer allocated > in realize isn't freed thus leaking memory leak. This patch avoid > this through adding the exit function.
I will just note that the real hardware is not hot-pluggable. However we don't need to stick to the real hardware capabilities, so that's OK. > Signed-off-by: Li Qiang <liqiang...@360.cn> > --- > hw/watchdog/wdt_i6300esb.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c > index a83d951..49b3cd1 100644 > --- a/hw/watchdog/wdt_i6300esb.c > +++ b/hw/watchdog/wdt_i6300esb.c > @@ -428,6 +428,14 @@ static void i6300esb_realize(PCIDevice *dev, Error > **errp) > /* qemu_register_coalesced_mmio (addr, 0x10); ? */ > } > > +static void i6300esb_exit(PCIDevice *dev) > +{ > + I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); > + > + timer_del(d->timer); > + timer_free(d->timer); > +} > + > static WatchdogTimerModel model = { > .wdt_name = "i6300esb", > .wdt_description = "Intel 6300ESB", > @@ -441,6 +449,7 @@ static void i6300esb_class_init(ObjectClass *klass, void > *data) > k->config_read = i6300esb_config_read; > k->config_write = i6300esb_config_write; > k->realize = i6300esb_realize; > + k->exit = i6300esb_exit; The wdt_diag288.c file seems to use k->unrealize for this purpose. I don't know which is correct however. Rich. > k->vendor_id = PCI_VENDOR_ID_INTEL; > k->device_id = PCI_DEVICE_ID_INTEL_ESB_9; > k->class_id = PCI_CLASS_SYSTEM_OTHER; > -- > 1.8.3.1 -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v