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.kel...@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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to