Index: uipc_mbuf.c =================================================================== RCS file: /cvs/src/sys/kern/uipc_mbuf.c,v retrieving revision 1.224 diff -u -p -r1.224 uipc_mbuf.c --- uipc_mbuf.c 15 Apr 2016 05:05:21 -0000 1.224 +++ uipc_mbuf.c 15 Apr 2016 05:19:49 -0000 @@ -326,8 +326,7 @@ m_clget(struct mbuf *m, int how, u_int p } buf = pool_get(pp, how == M_WAIT ? PR_WAITOK : PR_NOWAIT); if (buf == NULL) { - if (m0) - m_freem(m0); + m_freem(m0); return (NULL); } @@ -983,8 +982,7 @@ m_inject(struct mbuf *m0, int len0, int MGET(n, wait, MT_DATA); if (n == NULL) { - if (n2) - m_freem(n2); + m_freem(n2); return (NULL); } @@ -1399,15 +1397,10 @@ ml_dechain(struct mbuf_list *ml) unsigned int ml_purge(struct mbuf_list *ml) { - struct mbuf *m, *n; unsigned int len; - for (m = ml->ml_head; m != NULL; m = n) { - n = m->m_nextpkt; - m_freem(m); - } - len = ml->ml_len; + m_purge(ml->ml_head); ml_init(ml); return (len); @@ -1460,7 +1453,6 @@ mq_dequeue(struct mbuf_queue *mq) int mq_enlist(struct mbuf_queue *mq, struct mbuf_list *ml) { - struct mbuf *m; int dropped = 0; mtx_enter(&mq->mq_mtx); @@ -1472,10 +1464,8 @@ mq_enlist(struct mbuf_queue *mq, struct } mtx_leave(&mq->mq_mtx); - if (dropped) { - while ((m = ml_dequeue(ml)) != NULL) - m_freem(m); - } + if (dropped) + ml_purge(ml); return (dropped); }