diff options
author | Stephen Hurd <shurd@FreeBSD.org> | 2018-05-08 16:56:02 +0000 |
---|---|---|
committer | Stephen Hurd <shurd@FreeBSD.org> | 2018-05-08 16:56:02 +0000 |
commit | 6108c0139552629cab4166c88047beca25032140 (patch) | |
tree | 6fcd220d98887dee65c19824d43a4e7072a90682 /sys/net/iflib.c | |
parent | a1947307e7e5cc9af6db4a099df307fa7b957352 (diff) | |
download | src-6108c0139552629cab4166c88047beca25032140.tar.gz src-6108c0139552629cab4166c88047beca25032140.zip |
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
Notes
Notes:
svn path=/head/; revision=333366
Diffstat (limited to 'sys/net/iflib.c')
-rw-r--r-- | sys/net/iflib.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c index fc4b94ea52df..11a95897f3c9 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -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); } |