Date: Thu, 2 Jul 2009 10:22:19 +0300 From: Bohdan Tymkiv <bohdan200@gmail.com> To: Mikolaj Golub <to.my.trociny@gmail.com> Cc: freebsd-net@freebsd.org Subject: Re: kern/134557: [netgraph] [hang] 7.2 with mpd5.3 hanging up - ng_pptp problem Message-ID: <9ce5b0ed0907020022n14af930du1127acb35bc14cc0@mail.gmail.com> In-Reply-To: <200906301940.n5UJe2l3096572@freefall.freebsd.org> References: <200906301940.n5UJe2l3096572@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello Mikolaj, I confirm that this patch fixes the issue. Thank you very much! Now pptp through pppoe works fine! Bohdan Tymkiv On Tue, Jun 30, 2009 at 10:40 PM, Mikolaj Golub<to.my.trociny@gmail.com> wr= ote: > The following reply was made to PR kern/134557; it has been noted by GNAT= S. > > From: Mikolaj Golub <to.my.trociny@gmail.com> > To: bug-followup@FreeBSD.org > Cc: freebsd-net@FreeBSD.org, Sergei Cherveni <sergei.cherveni@gmail.com>,= Alexander Motin <mav@FreeBSD.org> > Subject: Re: kern/134557: [netgraph] [hang] 7.2 with mpd5.3 hanging up - = ng_pptp problem > Date: Tue, 30 Jun 2009 22:33:12 +0300 > > =C2=A0--=3D-=3D-=3D > > =C2=A0Unfortunately, the problem was introduced by this commit :-) > > =C2=A0---------- > > =C2=A0Author: =C2=A0 =C2=A0 =C2=A0 =C2=A0mav > =C2=A0Date: =C2=A0Sat Jan 31 12:48:09 2009 UTC (4 months, 4 weeks ago) > =C2=A0Log Message: > > =C2=A0MFC rev. 187495 > > =C2=A0Check for infinite recursion possible on some broken PPTP/L2TP/... = VPN setups. > =C2=A0Mark packets with mbuf_tag on first interface passage and drop on s= econd. > > =C2=A0PR: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ports/129625, ports/12= 5303 > > =C2=A0---------- > > =C2=A0If a packet goes through two or more ng interfaces, "while" loop in= the tag > =C2=A0checking code can run infinitely. The attached patch should fix thi= s. > > =C2=A0-- > =C2=A0Mikolaj Golub > > > =C2=A0--=3D-=3D-=3D > =C2=A0Content-Type: text/x-diff > =C2=A0Content-Disposition: attachment; filename=3Dng_iface.c.patch > > =C2=A0--- netgraph/ng_iface.c.orig =C2=A0 2009-06-30 21:47:54.000000000 += 0300 > =C2=A0+++ netgraph/ng_iface.c =C2=A0 =C2=A0 =C2=A0 =C2=A02009-06-30 21:49= :29.000000000 +0300 > =C2=A0@@ -365,7 +365,8 @@ > =C2=A0 =C2=A0 =C2=A0 =C2=A0} > > =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Protect from deadly infinite recursion. */ > =C2=A0- =C2=A0 =C2=A0 =C2=A0while ((mtag =3D m_tag_locate(m, MTAG_NGIF, M= TAG_NGIF_CALLED, NULL))) { > =C2=A0+ =C2=A0 =C2=A0 =C2=A0mtag =3D NULL; > =C2=A0+ =C2=A0 =C2=A0 =C2=A0while ((mtag =3D m_tag_locate(m, MTAG_NGIF, M= TAG_NGIF_CALLED, mtag))) { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (*(struct ifnet= **)(mtag + 1) =3D=3D ifp) { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0log(LOG_NOTICE, "Loop detected on %s\n", ifp->if_xname); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0m_freem(m); > > =C2=A0--=3D-=3D-=3D-- > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9ce5b0ed0907020022n14af930du1127acb35bc14cc0>