Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 01:13:52 +0300
From:      Oleg S <darkibot@gmail.com>
To:        freebsd-pf@freebsd.org
Subject:   Re: kern/130977: [netgraph][pf] kernel panic trap 12 on user connect to VPN server
Message-ID:  <d4023a250904131513l433a6da0m92adb24cc7a748fc@mail.gmail.com>
In-Reply-To: <200904110020.n3B0K301081510@freefall.freebsd.org>
References:  <200904110020.n3B0K301081510@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
i'm tried to reproduce bug with current patch, but it's not
reproduced. as i see bug is fixed. thanks.

2009/4/11 Max Laier <max@love2party.net>:
> The following reply was made to PR kern/130977; it has been noted by GNAT=
S.
>
> From: Max Laier <max@love2party.net>
> To: bug-followup@freebsd.org,
> =A0darkibot@gmail.com
> Cc:
> Subject: Re: kern/130977: [netgraph][pf] kernel panic trap 12 on user con=
nect to VPN server
> Date: Sat, 11 Apr 2009 01:11:54 +0100
>
> =A0--Boundary-00=3D_LB+3JRWytgyQ4AY
> =A0Content-Type: text/plain;
> =A0 charset=3D"us-ascii"
> =A0Content-Transfer-Encoding: 7bit
> =A0Content-Disposition: inline
>
> =A0Here is the MFC patch - if possible, please try and report back.
>
> =A0--
> =A0 Max
>
> =A0--Boundary-00=3D_LB+3JRWytgyQ4AY
> =A0Content-Type: text/x-patch;
> =A0 charset=3D"ISO-8859-1";
> =A0 name=3D"mfc.ifg.patch"
> =A0Content-Transfer-Encoding: 7bit
> =A0Content-Disposition: attachment;
> =A0 =A0 =A0 =A0filename=3D"mfc.ifg.patch"
>
> =A0Index: sys/net/if.c
> =A0=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
> =A0--- sys/net/if.c =A0 =A0 =A0 (revision 190905)
> =A0+++ sys/net/if.c =A0 =A0 =A0 (working copy)
> =A0@@ -128,6 +128,7 @@
> =A0static void =A0 do_link_state_change(void *, int);
> =A0static int =A0 =A0if_getgroup(struct ifgroupreq *, struct ifnet *);
> =A0static int =A0 =A0if_getgroupmembers(struct ifgroupreq *);
> =A0+static void =A0 if_delgroups(struct ifnet *);
> =A0#ifdef INET6
> =A0/*
> =A0 * XXX: declare here to avoid to include many inet6 related files..
> =A0@@ -828,6 +829,7 @@
> =A0 =A0 =A0 =A0rt_ifannouncemsg(ifp, IFAN_DEPARTURE);
> =A0 =A0 =A0 =A0EVENTHANDLER_INVOKE(ifnet_departure_event, ifp);
> =A0 =A0 =A0 =A0devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL);
> =A0+ =A0 =A0 =A0if_delgroups(ifp);
>
> =A0 =A0 =A0 =A0IF_AFDATA_LOCK(ifp);
> =A0 =A0 =A0 =A0for (dp =3D domains; dp; dp =3D dp->dom_next) {
> =A0@@ -963,6 +965,53 @@
> =A0}
>
> =A0/*
> =A0+ * Remove an interface from all groups
> =A0+ */
> =A0+static void
> =A0+if_delgroups(struct ifnet *ifp)
> =A0+{
> =A0+ =A0 =A0 =A0struct ifg_list =A0 =A0 =A0 =A0 *ifgl;
> =A0+ =A0 =A0 =A0struct ifg_member =A0 =A0 =A0 *ifgm;
> =A0+ =A0 =A0 =A0char groupname[IFNAMSIZ];
> =A0+
> =A0+ =A0 =A0 =A0IFNET_WLOCK();
> =A0+ =A0 =A0 =A0while (!TAILQ_EMPTY(&ifp->if_groups)) {
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0ifgl =3D TAILQ_FIRST(&ifp->if_groups);
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0strlcpy(groupname, ifgl->ifgl_group->ifg_=
group, IFNAMSIZ);
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0IF_ADDR_LOCK(ifp);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0TAILQ_REMOVE(&ifp->if_groups, ifgl, ifgl_=
next);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0IF_ADDR_UNLOCK(ifp);
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0TAILQ_FOREACH(ifgm, &ifgl->ifgl_group->if=
g_members, ifgm_next)
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (ifgm->ifgm_ifp =3D=3D=
 ifp)
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break;
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0if (ifgm !=3D NULL) {
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0TAILQ_REMOVE(&ifgl->ifgl_=
group->ifg_members, ifgm,
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ifgm_next);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0free(ifgm, M_TEMP);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0if (--ifgl->ifgl_group->ifg_refcnt =3D=3D=
 0) {
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0TAILQ_REMOVE(&ifg_head, i=
fgl->ifgl_group, ifg_next);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0EVENTHANDLER_INVOKE(group=
_detach_event,
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ifgl->ifgl_group)=
;
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0free(ifgl->ifgl_group, M_=
TEMP);
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0IFNET_WUNLOCK();
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0free(ifgl, M_TEMP);
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0EVENTHANDLER_INVOKE(group_change_event, g=
roupname);
> =A0+
> =A0+ =A0 =A0 =A0 =A0 =A0 =A0 =A0IFNET_WLOCK();
> =A0+ =A0 =A0 =A0}
> =A0+ =A0 =A0 =A0IFNET_WUNLOCK();
> =A0+}
> =A0+
> =A0+/*
> =A0 * Stores all groups from an interface in memory pointed
> =A0 * to by data
> =A0 */
>
> =A0--Boundary-00=3D_LB+3JRWytgyQ4AY--
> _______________________________________________
> freebsd-pf@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-pf
> To unsubscribe, send any mail to "freebsd-pf-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d4023a250904131513l433a6da0m92adb24cc7a748fc>