Index: netinet/if_ether.c =================================================================== RCS file: /cvs/src/sys/netinet/if_ether.c,v retrieving revision 1.182 diff -u -p -r1.182 if_ether.c --- netinet/if_ether.c 2 Nov 2015 15:05:23 -0000 1.182 +++ netinet/if_ether.c 3 Nov 2015 06:15:03 -0000 @@ -141,7 +141,6 @@ arp_rtrequest(struct ifnet *ifp, int req struct sockaddr *gate = rt->rt_gateway; struct llinfo_arp *la = (struct llinfo_arp *)rt->rt_llinfo; struct ifaddr *ifa; - struct mbuf *m; if (!arpinit_done) { static struct timeout arptimer_to; @@ -243,10 +242,7 @@ arp_rtrequest(struct ifnet *ifp, int req LIST_REMOVE(la, la_list); rt->rt_llinfo = 0; rt->rt_flags &= ~RTF_LLINFO; - while ((m = ml_dequeue(&la->la_ml)) != NULL) { - la_hold_total--; - m_freem(m); - } + la_hold_total -= ml_purge(&la->la_ml); pool_put(&arp_pool, la); } } @@ -395,10 +391,7 @@ arpresolve(struct ifnet *ifp, struct rte ml_enqueue(&la->la_ml, m); la_hold_total++; } else { - while ((mh = ml_dequeue(&la->la_ml)) != NULL) { - la_hold_total--; - m_freem(mh); - } + la_hold_total -= ml_purge(&la->la_ml); m_freem(m); } @@ -431,10 +424,7 @@ arpresolve(struct ifnet *ifp, struct rte rt->rt_flags |= RTF_REJECT; rt->rt_expire += arpt_down; la->la_asked = 0; - while ((mh = ml_dequeue(&la->la_ml)) != NULL) { - la_hold_total--; - m_freem(mh); - } + la_hold_total -= ml_purge(&la->la_ml); } } }