summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_mbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/uipc_mbuf.c')
-rw-r--r--sys/kern/uipc_mbuf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index cc38c40..763e0b4 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -519,6 +519,15 @@ m_freem(m)
if (m == NULL)
return;
do {
+ /*
+ * we do need to check non-first mbuf, since some of existing
+ * code does not call M_PREPEND properly.
+ * (example: call to bpf_mtap from drivers)
+ */
+ if ((m->m_flags & M_PKTHDR) != 0 && m->m_pkthdr.aux) {
+ m_freem(m->m_pkthdr.aux);
+ m->m_pkthdr.aux = NULL;
+ }
MFREE(m, n);
m = n;
} while (m);
OpenPOWER on IntegriCloud