The intent is to make the zone_mbuf static and switch from ctor/dtor through an indirect function call to a wrapper around uma_zalloc.
I'm not sure about the extra checks which come with it:
if ((m->m_flags & (M_PKTHDR|M_NOFREE)) == (M_PKTHDR|M_NOFREE))
m_tag_delete_chain(m, NULL);
if (m->m_flags & M_PKTHDR && m->m_pkthdr.csum_flags & CSUM_SND_TAG)
m_snd_tag_rele(m->m_pkthdr.snd_tag);
if (m->m_flags & M_EXTPG)
mb_free_extpg(m);
else if (m->m_flags & M_EXT)
mb_free_ext(m);
else if ((m->m_flags & M_NOFREE) == 0)
uma_zfree(zone_mbuf, m);I presume M_PKTHDR is not set, but I have trouble figuring out M_EXTPG and M_EXT and I don't have any means to test this. Worst case I can provide m_free_raw which ends up being an equivalent of doing uma_zfree(zone_mbuf, m);.