Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 May 2018 16:56:02 +0000 (UTC)
From:      Stephen Hurd <shurd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r333366 - head/sys/net
Message-ID:  <201805081656.w48Gu2NP025625@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: shurd
Date: Tue May  8 16:56:02 2018
New Revision: 333366
URL: https://svnweb.freebsd.org/changeset/base/333366

Log:
  iflib: cleanup queues when iflib_device_register fail
  
  Submitted by:	Jacob Keller <jacob.e.keller@intel.com>
  Reviewed by:	gallatin
  MFC after:	3 days
  Sponsored by:	Intel Corporation
  Differential Revision:	https://reviews.freebsd.org/D15299

Modified:
  head/sys/net/iflib.c

Modified: head/sys/net/iflib.c
==============================================================================
--- head/sys/net/iflib.c	Tue May  8 16:16:56 2018	(r333365)
+++ head/sys/net/iflib.c	Tue May  8 16:56:02 2018	(r333366)
@@ -4453,7 +4453,8 @@ fail_intr_free:
 	if (scctx->isc_intr == IFLIB_INTR_MSIX || scctx->isc_intr == IFLIB_INTR_MSI)
 		pci_release_msi(ctx->ifc_dev);
 fail_queues:
-	/* XXX free queues */
+	iflib_tx_structures_free(ctx);
+	iflib_rx_structures_free(ctx);
 fail:
 	IFDI_DETACH(ctx);
 	CTX_UNLOCK(ctx);
@@ -5065,14 +5066,16 @@ iflib_qset_structures_setup(if_ctx_t ctx)
 {
 	int err;
 
+	/*
+	 * It is expected that the caller takes care of freeing queues if this
+	 * fails.
+	 */
 	if ((err = iflib_tx_structures_setup(ctx)) != 0)
 		return (err);
 
-	if ((err = iflib_rx_structures_setup(ctx)) != 0) {
+	if ((err = iflib_rx_structures_setup(ctx)) != 0)
 		device_printf(ctx->ifc_dev, "iflib_rx_structures_setup failed: %d\n", err);
-		iflib_tx_structures_free(ctx);
-		iflib_rx_structures_free(ctx);
-	}
+
 	return (err);
 }
 



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