Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Aug 2005 11:33:10 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        Brooks Davis <brooks@one-eyed-alien.net>
Cc:        "Evgueni V. Gavrilov" <aquatique@rusunix.org>, freebsd-current@freebsd.org, glebius@freebsd.org, freebsd-net@freebsd.org
Subject:   Re: [Fwd: assigning an address to ng_fec(4) iface causes panic]
Message-ID:  <bb4a86c705082311337770151f@mail.gmail.com>
In-Reply-To: <20050823173622.GB6926@odin.ac.hmc.edu>
References:  <430B57A7.1050402@savvis.net> <bb4a86c70508231009131c50f2@mail.gmail.com> <20050823173622.GB6926@odin.ac.hmc.edu>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
On 8/23/05, Brooks Davis <brooks@one-eyed-alien.net> wrote:
> On Tue, Aug 23, 2005 at 10:09:06AM -0700, Maksim Yevmenkin wrote:
> > Hello,
> >
> > please try the attached patch.
> >
> > > >Description:
> > >         assigning an address to ng_fec(4) iface causes panic
> > >         during dumping to dumpdev another panic occurs preventing to identify the source of the first panic and having the crash dump
> > >
> > >         ng_iface creation sequence:
> > >         mkpeer fec dummy fec
> > >         msg fec0: add_iface "em0"
> > >         msg fec0: add_iface "em1"
> > >         msg fec0: set_mode_mac
> > >
> 
> > --- ng_fec.c.orig     Mon Aug 22 11:42:51 2005
> > +++ ng_fec.c  Tue Aug 23 10:05:23 2005
> > @@ -544,8 +544,8 @@
> >       struct ifnet            *ifp, *bifp;
> >       struct ng_fec_portlist  *p;
> >
> > -     ifp = arg;
> > -     priv = ifp->if_softc;
> > +     priv = arg;
> > +     ifp = priv->ifp;
> >       b = &priv->fec_bundle;
> >
> >       if (b->fec_ifcnt == 1 || b->fec_ifcnt == 3) {
> 
> This isn't quite sufficent.  You also should change the ng_fec_init(ifp)
> call on line 718 to ng_fec_init(ifp->if_softc).  If that work's I'll
> commit it.

oops... i missed this. thanks for catching this! i do not have
hardware to test it :) i have attached updated path. if anyone could
please test it and confirm that it works then feel free to commit it
(or let me know and i can commit it myself :)

> I've got to say this calling convention is really stupid.  I'm
> really tempted to change ifp->if_init() to take a struct ifnet * even
> though it means an API change and a tree sweep.

sounds good to me.

thanks,
max

[-- Attachment #2 --]
--- ng_fec.c.orig	Mon Aug 22 11:42:51 2005
+++ ng_fec.c	Tue Aug 23 11:28:36 2005
@@ -544,8 +544,8 @@
 	struct ifnet		*ifp, *bifp;
 	struct ng_fec_portlist	*p;
 
-	ifp = arg;
-	priv = ifp->if_softc;
+	priv = arg;
+	ifp = priv->ifp;
 	b = &priv->fec_bundle;
 
 	if (b->fec_ifcnt == 1 || b->fec_ifcnt == 3) {
@@ -715,7 +715,7 @@
 				}
 				ifp->if_drv_flags &= ~(IFF_DRV_OACTIVE);
 				ifp->if_drv_flags |= IFF_DRV_RUNNING;
-				ng_fec_init(ifp);
+				ng_fec_init(priv);
 			}
 			/*
 			 * Bubble down changes in promisc mode to
help

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