aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorKip Macy <kmacy@FreeBSD.org>2007-04-20 05:06:02 +0000
committerKip Macy <kmacy@FreeBSD.org>2007-04-20 05:06:02 +0000
commitf297a9d33624e1adf8324ec4f40225095b851b83 (patch)
tree8948f35a9fb53fd9a65e5e046312b8de07d3e57c /sys/dev
parent90bf3dc7cbe8dea306021c368ba59b9620418ff4 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cxgb/sys/uipc_mvec.c11
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