qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] watchdog: 6300esb: add exit function


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] watchdog: 6300esb: add exit function
Date: Tue, 29 Nov 2016 11:49:55 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Li Qiang <address@hidden> writes:

> Hi
>
> 2016-11-29 16:39 GMT+08:00 Richard W.M. Jones <address@hidden>:
>
>> On Mon, Nov 28, 2016 at 05:49:04PM -0800, Li Qiang wrote:
>> > From: Li Qiang <address@hidden>
>> >
>> > 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.
>>
>>
>
> If the hardware is not hot-pluggable, we can set dc->hotpluggable = false.
>
>
>> Signed-off-by: Li Qiang <address@hidden>
>> > ---
>> >  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.
>>
>>
>>
> wdt_diag288.c uses dc->unrealize for DeviceClass, while k->exit if for
> PCIDeviceClass.

Method exit() is deprecated, please use unrealize() in new code.

[...]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]