diff options
author | ae <ae@FreeBSD.org> | 2015-05-07 18:35:01 +0000 |
---|---|---|
committer | ae <ae@FreeBSD.org> | 2015-05-07 18:35:01 +0000 |
commit | 1ea3701ab5e2d85c46b359386f179a5ceaf80f87 (patch) | |
tree | 4fbb78cde71f46ea82ffa2c581b545df31031d7b /sys/kern/uipc_mbuf.c | |
parent | 5184251d09901df7cd1d548c3646e636aef15b6f (diff) | |
download | FreeBSD-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.c | 1 |
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; |