summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_mbuf.c
diff options
context:
space:
mode:
authorae <ae@FreeBSD.org>2015-05-07 18:35:01 +0000
committerae <ae@FreeBSD.org>2015-05-07 18:35:01 +0000
commit1ea3701ab5e2d85c46b359386f179a5ceaf80f87 (patch)
tree4fbb78cde71f46ea82ffa2c581b545df31031d7b /sys/kern/uipc_mbuf.c
parent5184251d09901df7cd1d548c3646e636aef15b6f (diff)
downloadFreeBSD-src-1ea3701ab5e2d85c46b359386f179a5ceaf80f87.zip
FreeBSD-src-1ea3701ab5e2d85c46b359386f179a5ceaf80f87.tar.gz
m_dup() is supposed to give a writable copy of an mbuf chain. It uses
m_dup_pkthdr(), that uses M_COPYFLAGS mask to copy m_flags field. If original mbuf chain has M_RDONLY flag, its copy also will have it. Reset this flag explicitly. MFC after: 2 weeks
Diffstat (limited to 'sys/kern/uipc_mbuf.c')
-rw-r--r--sys/kern/uipc_mbuf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index a1a7915..b77d476 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -813,6 +813,7 @@ m_dup(struct mbuf *m, int how)
}
if ((n->m_flags & M_EXT) == 0)
nsize = MHLEN;
+ n->m_flags &= ~M_RDONLY;
}
n->m_len = 0;
OpenPOWER on IntegriCloud