summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge V. Neville-Neil <gnn@FreeBSD.org>2008-09-03 22:40:38 +0000
committerGeorge V. Neville-Neil <gnn@FreeBSD.org>2008-09-03 22:40:38 +0000
commit6fbc3ece656ea785d12a1b05be80e6581bbafd65 (patch)
tree2d6d2672e4f0ccf61e95146a920ddc0e29210777
parent86892f34aefe79b577db74981e520f0b943632bb (diff)
Notes
-rw-r--r--sys/netinet/ip_output.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 94799edf05c3..dda903cbe352 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -1135,7 +1135,11 @@ ip_mloopback(struct ifnet *ifp, struct mbuf *m, struct sockaddr_in *dst,
register struct ip *ip;
struct mbuf *copym;
- copym = m_copy(m, 0, M_COPYALL);
+ /*
+ * Make a deep copy of the packet because we're going to
+ * modify the pack in order to generate checksums.
+ */
+ copym = m_dup(m, M_DONTWAIT);
if (copym != NULL && (copym->m_flags & M_EXT || copym->m_len < hlen))
copym = m_pullup(copym, hlen);
if (copym != NULL) {