From owner-svn-soc-all@FreeBSD.ORG Sun Jun 14 03:22:53 2015 Return-Path: Delivered-To: svn-soc-all@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7CF17366 for ; Sun, 14 Jun 2015 03:22:53 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5FE1FB73 for ; Sun, 14 Jun 2015 03:22:53 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t5E3Mrm0094011 for ; Sun, 14 Jun 2015 03:22:53 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t5E3MqPO093981 for svn-soc-all@FreeBSD.org; Sun, 14 Jun 2015 03:22:52 GMT (envelope-from btw@FreeBSD.org) Date: Sun, 14 Jun 2015 03:22:52 GMT Message-Id: <201506140322.t5E3MqPO093981@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r287064 - soc2015/btw/head/tools/tools/mq-testing/vme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jun 2015 03:22:53 -0000 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,