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>