Skip site navigation (1)Skip section navigation (2)
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>