diff options
| author | Kip Macy <kmacy@FreeBSD.org> | 2007-04-20 05:06:02 +0000 |
|---|---|---|
| committer | Kip Macy <kmacy@FreeBSD.org> | 2007-04-20 05:06:02 +0000 |
| commit | f297a9d33624e1adf8324ec4f40225095b851b83 (patch) | |
| tree | 8948f35a9fb53fd9a65e5e046312b8de07d3e57c /sys/dev | |
| parent | 90bf3dc7cbe8dea306021c368ba59b9620418ff4 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/cxgb/sys/uipc_mvec.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/cxgb/sys/uipc_mvec.c b/sys/dev/cxgb/sys/uipc_mvec.c index aec78b160d22..bbe6b7638b8b 100644 --- a/sys/dev/cxgb/sys/uipc_mvec.c +++ b/sys/dev/cxgb/sys/uipc_mvec.c @@ -258,7 +258,7 @@ _m_collapse(struct mbuf *m, int maxbufs, struct mbuf **mnew) { struct mbuf *m0, *lmvec[MAX_BUFS]; struct mbuf **mnext; - struct mbuf **vec = &lmvec[0]; + struct mbuf **vec = lmvec; struct mbuf *mhead = NULL; struct mbuf_vec *mv; int err, i, j, max, len, nhbufs; @@ -273,9 +273,9 @@ _m_collapse(struct mbuf *m, int maxbufs, struct mbuf **mnew) } if ((err = m_vectorize(m, maxbufs, vec, &max)) != 0) - return (err); + goto out; if ((err = m_findmbufs(vec, max, dvec, MAX_HVEC, &nhbufs)) != 0) - return (err); + goto out; KASSERT(max > 0, ("invalid mbuf count")); KASSERT(nhbufs > 0, ("invalid header mbuf count")); @@ -322,7 +322,10 @@ _m_collapse(struct mbuf *m, int maxbufs, struct mbuf **mnew) } *mnew = mhead; - return (0); +out: + if (vec != lmvec) + free(vec, M_DEVBUF); + return (err); } void |
