summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_mbuf.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2015-10-07 12:40:00 +0000
committerglebius <glebius@FreeBSD.org>2015-10-07 12:40:00 +0000
commitdaa604f29470fbd4f5eac28fbe136749017b98ab (patch)
treede2fa767d33e653d534fd4a2dd87dc10215b7739 /sys/kern/uipc_mbuf.c
parenta2200eb70bd6c71b3c2a9fc1a23fa2580e8d07a9 (diff)
downloadFreeBSD-src-daa604f29470fbd4f5eac28fbe136749017b98ab.zip
FreeBSD-src-daa604f29470fbd4f5eac28fbe136749017b98ab.tar.gz
Fix regression from r248371. We need to copy packet header to new
mbuf. Unlike in the pre-r248371 code, assert that M_PKTHDR is set only on a first mbuf. Reported & tested by: Andriy Voskoboinyk <s3erios gmail.com> Sponsored by: Nginx, Inc.
Diffstat (limited to 'sys/kern/uipc_mbuf.c')
-rw-r--r--sys/kern/uipc_mbuf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index fcb112d..7f994fe 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -1867,6 +1867,11 @@ m_unshare(struct mbuf *m0, int how)
m_freem(m0);
return (NULL);
}
+ if (m->m_flags & M_PKTHDR) {
+ KASSERT(mprev == NULL, ("%s: m0 %p, m %p has M_PKTHDR",
+ __func__, m0, m));
+ m_move_pkthdr(n, m);
+ }
len = m->m_len;
off = 0;
mfirst = n;
OpenPOWER on IntegriCloud