From owner-svn-src-all@FreeBSD.ORG Tue Nov 25 11:38:37 2014 Return-Path: Delivered-To: svn-src-all@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 CA57CE4E; Tue, 25 Nov 2014 11:38:37 +0000 (UTC) Received: from smtp.des.no (smtp.des.no [194.63.250.102]) by mx1.freebsd.org (Postfix) with ESMTP id 8C8A1B67; Tue, 25 Nov 2014 11:38:37 +0000 (UTC) Received: from nine.des.no (smtp.des.no [194.63.250.102]) by smtp-int.des.no (Postfix) with ESMTP id E04EEAD26; Tue, 25 Nov 2014 11:38:35 +0000 (UTC) Received: by nine.des.no (Postfix, from userid 1001) id B4ED112AB; Tue, 25 Nov 2014 12:38:28 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Ermal LuXXi Subject: Re: svn commit: r274709 - head/sys/netpfil/pf References: <201411191331.sAJDV9bH092190@svn.freebsd.org> <86tx1nvcy4.fsf@nine.des.no> <86ppcbvb04.fsf@nine.des.no> Date: Tue, 25 Nov 2014 12:38:28 +0100 In-Reply-To: <86ppcbvb04.fsf@nine.des.no> ("Dag-Erling =?utf-8?Q?Sm=C3=B8r?= =?utf-8?Q?grav=22's?= message of "Tue, 25 Nov 2014 11:18:51 +0100") Message-ID: <86ioi3y0gb.fsf@nine.des.no> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Nov 2014 11:38:37 -0000 Here's a patch that doesn't crash and tries not to break TSO. Index: sys/netpfil/pf/pf_ioctl.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- sys/netpfil/pf/pf_ioctl.c (revision 274791) +++ sys/netpfil/pf/pf_ioctl.c (working copy) @@ -3576,9 +3576,10 @@ int chk; =20 /* We need a proper CSUM befor we start (s. OpenBSD ip_output) */ - if ((*m)->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { + if ((*m)->m_pkthdr.csum_flags & + ((CSUM_DELAY_IP|CSUM_DELAY_DATA) & ~ifp->if_hwassist)) { in_delayed_cksum(*m); - (*m)->m_pkthdr.csum_flags &=3D ~CSUM_DELAY_DATA; + (*m)->m_pkthdr.csum_flags &=3D ~(CSUM_DELAY_IP|CSUM_DELAY_DATA); } =20 chk =3D pf_test(PF_OUT, ifp, m, inp); @@ -3620,12 +3621,14 @@ int chk; =20 /* We need a proper CSUM before we start (s. OpenBSD ip_output) */ - if ((*m)->m_pkthdr.csum_flags & CSUM_DELAY_DATA_IPV6) { + if ((*m)->m_pkthdr.csum_flags & + (CSUM_DELAY_DATA_IPV6 & ~ifp->if_hwassist)) { in6_delayed_cksum(*m, (*m)->m_pkthdr.len - sizeof(struct ip6_hdr), sizeof(struct ip6_hdr)); (*m)->m_pkthdr.csum_flags &=3D ~CSUM_DELAY_DATA_IPV6; } + CURVNET_SET(ifp->if_vnet); chk =3D pf_test6(PF_OUT, ifp, m, inp); CURVNET_RESTORE(); DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no