socsvn commit: r287064 - soc2015/btw/head/tools/tools/mq-testing/vme
btw at FreeBSD.org
btw at FreeBSD.org
Sun Jun 14 03:22:53 UTC 2015
Author: btw
Date: Sun Jun 14 03:22:52 2015
New Revision: 287064
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=287064
Log:
Don't pull up the mbuf in vmersshash and the likes, m_pullup may reallocate
the memory.
Modified:
soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c
Modified: soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c
==============================================================================
--- soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c Sun Jun 14 03:05:03 2015 (r287063)
+++ soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c Sun Jun 14 03:22:52 2015 (r287064)
@@ -1096,8 +1096,7 @@
hdrlen = sizeof(*eh) + sizeof(*ip);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
eh = mtod(m, struct ether_header *);
@@ -1111,11 +1110,8 @@
if ((rss_gethashconfig() & RSS_HASHTYPE_RSS_UDP_IPV4) &&
(proto == IPPROTO_UDP) && (is_frag == 0)) {
hdrlen += iphlen - sizeof(*ip) + sizeof(*uh);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
- eh = mtod(m, struct ether_header *);
- ip = (const struct ip *)(eh + 1);
uh = (const struct udphdr *)((c_caddr_t)ip + iphlen);
rss_proto_software_hash_v4(ip->ip_src, ip->ip_dst,
uh->uh_sport, uh->uh_dport, proto, hashval,
@@ -1123,11 +1119,8 @@
} else if ((rss_gethashconfig() & RSS_HASHTYPE_RSS_TCP_IPV4) &&
(proto == IPPROTO_TCP) && (is_frag == 0)) {
hdrlen += iphlen - sizeof(*ip) + sizeof(*th);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
- eh = mtod(m, struct ether_header *);
- ip = (const struct ip *)(eh + 1);
th = (const struct tcphdr *)((c_caddr_t)ip + iphlen);
rss_proto_software_hash_v4(ip->ip_src, ip->ip_dst,
th->th_sport, th->th_dport, proto, hashval,
@@ -1153,8 +1146,7 @@
hdrlen = sizeof(*eh) + sizeof(*ip6);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
eh = mtod(m, struct ether_header *);
@@ -1164,11 +1156,8 @@
if ((rss_gethashconfig() & RSS_HASHTYPE_RSS_UDP_IPV6) &&
(proto == IPPROTO_UDP)) {
hdrlen += sizeof(*uh);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
- eh = mtod(m, struct ether_header *);
- ip6 = (const struct ip6_hdr *)(eh + 1);
uh = (const struct udphdr *)(ip6 + 1);
rss_proto_software_hash_v6(&ip6->ip6_src, &ip6->ip6_dst,
uh->uh_sport, uh->uh_dport, proto, hashval,
@@ -1176,11 +1165,8 @@
} else if ((rss_gethashconfig() & RSS_HASHTYPE_RSS_TCP_IPV6) &&
(proto == IPPROTO_TCP)) {
hdrlen += sizeof(*th);
- if (m->m_pkthdr.len < hdrlen || (m->m_len < hdrlen &&
- (m = m_pullup(m, hdrlen)) == NULL))
+ if (m->m_len < hdrlen)
return;
- eh = mtod(m, struct ether_header *);
- ip6 = (const struct ip6_hdr *)(eh + 1);
th = (const struct tcphdr *)(ip6 + 1);
rss_proto_software_hash_v6(&ip6->ip6_src, &ip6->ip6_dst,
th->th_sport, th->th_dport, proto, hashval,
More information about the svn-soc-all
mailing list