All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit
@ 2016-10-08 12:07 Li Qiang
  2016-10-08 16:19 ` Stefan Weil
  2016-10-20  2:36 ` Jason Wang
  0 siblings, 2 replies; 5+ messages in thread
From: Li Qiang @ 2016-10-08 12:07 UTC (permalink / raw)
  To: jasowang, qemu-devel; +Cc: Li Qiang

From: Li Qiang <liqiang6-s@360.cn>

The exit dispatch of eepro100 network card device doesn't free
the 's->vmstate' field which was allocated in device realize thus
leading a host memory leak. This patch avoid this.

Signed-off-by: Li Qiang <liqiang6-s@360.cn>
---
 hw/net/eepro100.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index bab4dbf..4bf71f2 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -1843,6 +1843,7 @@ static void pci_nic_uninit(PCIDevice *pci_dev)
     EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev);
 
     vmstate_unregister(&pci_dev->qdev, s->vmstate, s);
+    g_free(s->vmstate);
     eeprom93xx_free(&pci_dev->qdev, s->eeprom);
     qemu_del_nic(s->nic);
 }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit
  2016-10-08 12:07 [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit Li Qiang
@ 2016-10-08 16:19 ` Stefan Weil
  2016-10-08 16:43   ` Stefan Weil
  2016-10-20  2:36 ` Jason Wang
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Weil @ 2016-10-08 16:19 UTC (permalink / raw)
  To: Li Qiang, jasowang, qemu-devel; +Cc: Li Qiang

Am 08.10.2016 um 14:07 schrieb Li Qiang:
> From: Li Qiang <liqiang6-s@360.cn>
>
> The exit dispatch of eepro100 network card device doesn't free
> the 's->vmstate' field which was allocated in device realize thus
> leading a host memory leak. This patch avoid this.
>
> Signed-off-by: Li Qiang <liqiang6-s@360.cn>

Thank you for reporting this memory leak.

I think that an even better solution would be avoiding the dynamic 
memory allocation. We could use this declaration for example:

     /* vmstate for each particular nic */
     VMStateDescription vmstate;

Do you want to prepare a new patch, or should I do it?

Regards
Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit
  2016-10-08 16:19 ` Stefan Weil
@ 2016-10-08 16:43   ` Stefan Weil
  2016-10-09 10:23     ` Li Qiang
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Weil @ 2016-10-08 16:43 UTC (permalink / raw)
  To: Li Qiang, jasowang, qemu-devel; +Cc: Li Qiang

Am 08.10.2016 um 18:19 schrieb Stefan Weil:
> Am 08.10.2016 um 14:07 schrieb Li Qiang:
>> From: Li Qiang <liqiang6-s@360.cn>
>>
>> The exit dispatch of eepro100 network card device doesn't free
>> the 's->vmstate' field which was allocated in device realize thus
>> leading a host memory leak. This patch avoid this.
>>
>> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
>
> Thank you for reporting this memory leak.
>
> I think that an even better solution would be avoiding the dynamic
> memory allocation. We could use this declaration for example:
>
>     /* vmstate for each particular nic */
>     VMStateDescription vmstate;
>
> Do you want to prepare a new patch, or should I do it?

While thinking more about it, the solution used for e1000 looks better: 
vmstate could be a static const object, and the name field would always 
be "e100", no matter which specific nic was chosen.

Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit
  2016-10-08 16:43   ` Stefan Weil
@ 2016-10-09 10:23     ` Li Qiang
  0 siblings, 0 replies; 5+ messages in thread
From: Li Qiang @ 2016-10-09 10:23 UTC (permalink / raw)
  To: Stefan Weil; +Cc: jasowang, qemu-devel, Li Qiang

Hello Stefan,

I'm not familiar with the migration. In order not miss something, I think
you can provide this patch.

Thanks.

2016-10-09 0:43 GMT+08:00 Stefan Weil <sw@weilnetz.de>:

> Am 08.10.2016 um 18:19 schrieb Stefan Weil:
>
>> Am 08.10.2016 um 14:07 schrieb Li Qiang:
>>
>>> From: Li Qiang <liqiang6-s@360.cn>
>>>
>>> The exit dispatch of eepro100 network card device doesn't free
>>> the 's->vmstate' field which was allocated in device realize thus
>>> leading a host memory leak. This patch avoid this.
>>>
>>> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
>>>
>>
>> Thank you for reporting this memory leak.
>>
>> I think that an even better solution would be avoiding the dynamic
>> memory allocation. We could use this declaration for example:
>>
>>     /* vmstate for each particular nic */
>>     VMStateDescription vmstate;
>>
>> Do you want to prepare a new patch, or should I do it?
>>
>
> While thinking more about it, the solution used for e1000 looks better:
> vmstate could be a static const object, and the name field would always be
> "e100", no matter which specific nic was chosen.
>
> Stefan
>
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit
  2016-10-08 12:07 [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit Li Qiang
  2016-10-08 16:19 ` Stefan Weil
@ 2016-10-20  2:36 ` Jason Wang
  1 sibling, 0 replies; 5+ messages in thread
From: Jason Wang @ 2016-10-20  2:36 UTC (permalink / raw)
  To: Li Qiang, qemu-devel; +Cc: Li Qiang



On 2016年10月08日 20:07, Li Qiang wrote:
> From: Li Qiang <liqiang6-s@360.cn>
>
> The exit dispatch of eepro100 network card device doesn't free
> the 's->vmstate' field which was allocated in device realize thus
> leading a host memory leak. This patch avoid this.
>
> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
> ---
>   hw/net/eepro100.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
> index bab4dbf..4bf71f2 100644
> --- a/hw/net/eepro100.c
> +++ b/hw/net/eepro100.c
> @@ -1843,6 +1843,7 @@ static void pci_nic_uninit(PCIDevice *pci_dev)
>       EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev);
>   
>       vmstate_unregister(&pci_dev->qdev, s->vmstate, s);
> +    g_free(s->vmstate);
>       eeprom93xx_free(&pci_dev->qdev, s->eeprom);
>       qemu_del_nic(s->nic);
>   }

Applied, thanks.

We may want to switch to use dc->vmsd instead of this in the future.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-10-20  2:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-08 12:07 [Qemu-devel] [PATCH] net: eepro100: fix memory leak in device uninit Li Qiang
2016-10-08 16:19 ` Stefan Weil
2016-10-08 16:43   ` Stefan Weil
2016-10-09 10:23     ` Li Qiang
2016-10-20  2:36 ` Jason Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.