Index: sys/net/if_epair.c =================================================================== --- sys/net/if_epair.c +++ sys/net/if_epair.c @@ -131,7 +131,10 @@ m = buf_ring_dequeue_sc(sc->rxring[ridx]); if (m == NULL) break; - + if (__predict_false(m_rcvif_restore(m) == NULL)) { + m_freem(m); + continue; + } MPASS((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0); (*ifp->if_input)(ifp, m); @@ -193,6 +196,7 @@ M_ASSERTPKTHDR(m); epair_clear_mbuf(m); if_setrcvif(m, oifp); + m_rcvif_serialize(m); M_SETFIB(m, oifp->if_fib); /* Save values as once the mbuf is queued, it's not ours anymore. */