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>