From 18ba75248faa51c41fe1fdc09b08dc2b3f69de8d Mon Sep 17 00:00:00 2001 From: Jie Deng Date: Mon, 11 Mar 2019 21:20:59 +0800 Subject: [PATCH] dm: virtio-net: fix memory leak Dynamic memory stored in 'net' allocated through function 'calloc' should be freed correspondingly when return fail. Tracked-On: #2704 Signed-off-by: Jie Deng Reviewed-by: Yonghua Huang --- devicemodel/hw/pci/virtio/virtio_net.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devicemodel/hw/pci/virtio/virtio_net.c b/devicemodel/hw/pci/virtio/virtio_net.c index 30b2d29da..1a71dae5b 100644 --- a/devicemodel/hw/pci/virtio/virtio_net.c +++ b/devicemodel/hw/pci/virtio/virtio_net.c @@ -764,6 +764,7 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts) devname = vtopts = strdup(opts); if (!devname) { WPRINTF(("virtio_net: strdup returns NULL\n")); + free(net); return -1; } @@ -777,6 +778,7 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts) net->config.mac); if (err != 0) { free(devname); + free(net); return err; } mac_provided = 1; @@ -805,6 +807,7 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts) if (!devname) { WPRINTF(("virtio_net: devname NULL\n")); + free(net); return -1; }