svn commit: r333341 - stable/11/sys/net
Stephen Hurd
shurd at FreeBSD.org
Mon May 7 23:10:03 UTC 2018
Author: shurd
Date: Mon May 7 23:10:02 2018
New Revision: 333341
URL: https://svnweb.freebsd.org/changeset/base/333341
Log:
MFC r333253-r333254
Fixes invalid free()s when iflib_queues_alloc() fails, and remove unused
brscp variable.
Approved by: re (gjb@)
Modified:
stable/11/sys/net/iflib.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/net/iflib.c
==============================================================================
--- stable/11/sys/net/iflib.c Mon May 7 22:33:40 2018 (r333340)
+++ stable/11/sys/net/iflib.c Mon May 7 23:10:02 2018 (r333341)
@@ -4719,17 +4719,12 @@ iflib_queues_alloc(if_ctx_t ctx)
int nfree_lists = sctx->isc_nfl ? sctx->isc_nfl : 1;
caddr_t *vaddrs;
uint64_t *paddrs;
- struct ifmp_ring **brscp;
KASSERT(ntxqs > 0, ("number of queues per qset must be at least 1"));
KASSERT(nrxqs > 0, ("number of queues per qset must be at least 1"));
- brscp = NULL;
- txq = NULL;
- rxq = NULL;
-
/* Allocate the TX ring struct memory */
- if (!(txq =
+ if (!(ctx->ifc_txqs =
(iflib_txq_t) malloc(sizeof(struct iflib_txq) *
ntxqsets, M_IFLIB, M_NOWAIT | M_ZERO))) {
device_printf(dev, "Unable to allocate TX ring memory\n");
@@ -4738,7 +4733,7 @@ iflib_queues_alloc(if_ctx_t ctx)
}
/* Now allocate the RX */
- if (!(rxq =
+ if (!(ctx->ifc_rxqs =
(iflib_rxq_t) malloc(sizeof(struct iflib_rxq) *
nrxqsets, M_IFLIB, M_NOWAIT | M_ZERO))) {
device_printf(dev, "Unable to allocate RX ring memory\n");
@@ -4746,8 +4741,8 @@ iflib_queues_alloc(if_ctx_t ctx)
goto rx_fail;
}
- ctx->ifc_txqs = txq;
- ctx->ifc_rxqs = rxq;
+ txq = ctx->ifc_txqs;
+ rxq = ctx->ifc_rxqs;
/*
* XXX handle allocation failure
@@ -4905,19 +4900,13 @@ iflib_queues_alloc(if_ctx_t ctx)
/* XXX handle allocation failure changes */
err_rx_desc:
err_tx_desc:
+rx_fail:
if (ctx->ifc_rxqs != NULL)
free(ctx->ifc_rxqs, M_IFLIB);
ctx->ifc_rxqs = NULL;
if (ctx->ifc_txqs != NULL)
free(ctx->ifc_txqs, M_IFLIB);
ctx->ifc_txqs = NULL;
-rx_fail:
- if (brscp != NULL)
- free(brscp, M_IFLIB);
- if (rxq != NULL)
- free(rxq, M_IFLIB);
- if (txq != NULL)
- free(txq, M_IFLIB);
fail:
return (err);
}
More information about the svn-src-stable
mailing list