Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jul 2019 11:34:15 +0000 (UTC)
From:      Vincenzo Maffione <vmaffione@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r350197 - stable/12/usr.sbin/bhyve
Message-ID:  <201907211134.x6LBYF9h029344@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vmaffione
Date: Sun Jul 21 11:34:14 2019
New Revision: 350197
URL: https://svnweb.freebsd.org/changeset/base/350197

Log:
  MFC r349935
  
  usr.sbin/bhyve: free resources when erroring out of pci_vtnet_init()
  
  Submitted by:	seanc
  Coverity CID:   1402978
  Approved by:    vmaffione
  Reviewed by:    jhb
  Differential Revision:  https://reviews.freebsd.org/D20912

Modified:
  stable/12/usr.sbin/bhyve/pci_virtio_net.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.sbin/bhyve/pci_virtio_net.c
==============================================================================
--- stable/12/usr.sbin/bhyve/pci_virtio_net.c	Sun Jul 21 11:28:40 2019	(r350196)
+++ stable/12/usr.sbin/bhyve/pci_virtio_net.c	Sun Jul 21 11:34:14 2019	(r350197)
@@ -411,6 +411,7 @@ pci_vtnet_init(struct vmctx *ctx, struct pci_devinst *
 			err = net_parsemac(vtopts, sc->vsc_config.mac);
 			if (err != 0) {
 				free(devname);
+				free(sc);
 				return (err);
 			}
 			mac_provided = 1;
@@ -419,8 +420,10 @@ pci_vtnet_init(struct vmctx *ctx, struct pci_devinst *
 		err = netbe_init(&sc->vsc_be, devname, pci_vtnet_rx_callback,
 		          sc);
 		free(devname);
-		if (err)
+		if (err) {
+			free(sc);
 			return (err);
+		}
 		sc->vsc_consts.vc_hv_caps |= netbe_get_cap(sc->vsc_be);
 	}
 
@@ -442,8 +445,10 @@ pci_vtnet_init(struct vmctx *ctx, struct pci_devinst *
 	sc->vsc_vs.vs_mtx = &sc->vsc_mtx;
 
 	/* use BAR 1 to map MSI-X table and PBA, if we're using MSI-X */
-	if (vi_intr_init(&sc->vsc_vs, 1, fbsdrun_virtio_msix()))
+	if (vi_intr_init(&sc->vsc_vs, 1, fbsdrun_virtio_msix())) {
+		free(sc);
 		return (1);
+	}
 
 	/* use BAR 0 to map config regs in IO space */
 	vi_set_io_bar(&sc->vsc_vs, 0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201907211134.x6LBYF9h029344>