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