diff options
author | George V. Neville-Neil <gnn@FreeBSD.org> | 2008-09-03 22:40:38 +0000 |
---|---|---|
committer | George V. Neville-Neil <gnn@FreeBSD.org> | 2008-09-03 22:40:38 +0000 |
commit | 6fbc3ece656ea785d12a1b05be80e6581bbafd65 (patch) | |
tree | 2d6d2672e4f0ccf61e95146a920ddc0e29210777 | |
parent | 86892f34aefe79b577db74981e520f0b943632bb (diff) |
Notes
-rw-r--r-- | sys/netinet/ip_output.c | 6 |
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) { |