[Fwd: assigning an address to ng_fec(4) iface causes panic]
Maksim Yevmenkin
maksim.yevmenkin at gmail.com
Tue Aug 23 18:33:12 GMT 2005
On 8/23/05, Brooks Davis <brooks at 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
-------------- next part --------------
--- 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
More information about the freebsd-current
mailing list