qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] eepro100: Fix memory leak and simplify code for VMStateDescription
@ 2016-10-13 17:45 Stefan Weil
  2016-10-14  8:25 ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2016-10-13 17:45 UTC (permalink / raw)
  To: QEMU Developer; +Cc: Jason Wang, Li Qiang, Stefan Weil

Instead of allocating a VMStateDescription for each NIC instance,
the code now uses a single constant VMStateDescription for all
instances. That implies that the name field is always the same.

Reported-by: Li Qiang <liqiang6-s@360.cn>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 hw/net/eepro100.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index bab4dbf..6f9777d 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -269,9 +269,6 @@ typedef struct {
     /* Configuration bytes. */
     uint8_t configuration[22];
 
-    /* vmstate for each particular nic */
-    VMStateDescription *vmstate;
-
     /* Quasi static device properties (no need to save them). */
     uint16_t stats_size;
     bool has_extended_tcb_support;
@@ -1787,7 +1784,8 @@ static ssize_t nic_receive(NetClientState *nc, const uint8_t * buf, size_t size)
     return size;
 }
 
-static const VMStateDescription vmstate_eepro100 = {
+static const VMStateDescription vmstate_e100 = {
+    .name = "e100",
     .version_id = 3,
     .minimum_version_id = 2,
     .fields = (VMStateField[]) {
@@ -1842,7 +1840,6 @@ static void pci_nic_uninit(PCIDevice *pci_dev)
 {
     EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev);
 
-    vmstate_unregister(&pci_dev->qdev, s->vmstate, s);
     eeprom93xx_free(&pci_dev->qdev, s->eeprom);
     qemu_del_nic(s->nic);
 }
@@ -1892,11 +1889,6 @@ static void e100_nic_realize(PCIDevice *pci_dev, Error **errp)
     TRACE(OTHER, logout("%s\n", qemu_get_queue(s->nic)->info_str));
 
     qemu_register_reset(nic_reset, s);
-
-    s->vmstate = g_malloc(sizeof(vmstate_eepro100));
-    memcpy(s->vmstate, &vmstate_eepro100, sizeof(vmstate_eepro100));
-    s->vmstate->name = qemu_get_queue(s->nic)->model;
-    vmstate_register(&pci_dev->qdev, -1, s->vmstate, s);
 }
 
 static void eepro100_instance_init(Object *obj)
@@ -2083,6 +2075,7 @@ static void eepro100_class_init(ObjectClass *klass, void *data)
     set_bit(DEVICE_CATEGORY_NETWORK, dc->categories);
     dc->props = e100_properties;
     dc->desc = info->desc;
+    dc->vmsd = &vmstate_e100;
     k->vendor_id = PCI_VENDOR_ID_INTEL;
     k->class_id = PCI_CLASS_NETWORK_ETHERNET;
     k->romfile = "pxe-eepro100.rom";
-- 
2.1.4

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

end of thread, other threads:[~2016-10-21 19:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-13 17:45 [Qemu-devel] [PATCH] eepro100: Fix memory leak and simplify code for VMStateDescription Stefan Weil
2016-10-14  8:25 ` Dr. David Alan Gilbert
2016-10-15  5:35   ` Stefan Weil
2016-10-17  9:01     ` Dr. David Alan Gilbert
2016-10-21  1:53       ` Jason Wang
2016-10-21  8:06         ` Dr. David Alan Gilbert
2016-10-21 19:25           ` Stefan Weil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).