svn commit: r248320 - head/sys/netinet6
Gleb Smirnoff
glebius at FreeBSD.org
Fri Mar 15 12:33:24 UTC 2013
Author: glebius
Date: Fri Mar 15 12:33:23 2013
New Revision: 248320
URL: http://svnweb.freebsd.org/changeset/base/248320
Log:
Use m_getcl() instead of hand made allocation.
Sponsored by: Nginx, Inc.
Modified:
head/sys/netinet6/ip6_input.c
Modified: head/sys/netinet6/ip6_input.c
==============================================================================
--- head/sys/netinet6/ip6_input.c Fri Mar 15 11:16:12 2013 (r248319)
+++ head/sys/netinet6/ip6_input.c Fri Mar 15 12:33:23 2013 (r248320)
@@ -497,21 +497,16 @@ ip6_input(struct mbuf *m)
if (m && m->m_next != NULL && m->m_pkthdr.len < MCLBYTES) {
struct mbuf *n;
- MGETHDR(n, M_NOWAIT, MT_HEADER);
- if (n)
- M_MOVE_PKTHDR(n, m);
- if (n && n->m_pkthdr.len > MHLEN) {
- MCLGET(n, M_NOWAIT);
- if ((n->m_flags & M_EXT) == 0) {
- m_freem(n);
- n = NULL;
- }
- }
+ if (m->m_pkthdr.len > MHLEN)
+ n = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
+ else
+ n = m_gethdr(M_NOWAIT, MT_DATA);
if (n == NULL) {
m_freem(m);
return; /* ENOBUFS */
}
+ M_MOVE_PKTHDR(n, m);
m_copydata(m, 0, n->m_pkthdr.len, mtod(n, caddr_t));
n->m_len = n->m_pkthdr.len;
m_freem(m);
More information about the svn-src-all
mailing list