Date: Tue, 9 Aug 2005 13:48:04 -0700 From: Darcy Buskermolen <darcy@wavefire.com> To: Brooks Davis <brooks@one-eyed-alien.net> Cc: freebsd-net@freebsd.org Subject: Re: panic: if_attach called without if_alloc'd input() Message-ID: <200508091348.05099.darcy@wavefire.com> In-Reply-To: <20050809181601.GB20908@odin.ac.hmc.edu> References: <200508090854.21278.darcy@wavefire.com> <20050809181601.GB20908@odin.ac.hmc.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 09 August 2005 11:16, Brooks Davis wrote: > On Tue, Aug 09, 2005 at 08:54:21AM -0700, Darcy Buskermolen wrote: > > I'm getting the following panic on my RELENG_6 test box: > > > > xl1f0: BUG: if_attach called without if_alloc'd input() > > > > Where should I be looking to track this down? I suspect it has to do with > > a custom kernel, it wasn't doing it when i was running GENERIC > > The ef(4) device is currently broken. I haven't had time to look at it > much though it seems mostly correct by inspection so I'm not sure what's > going on. > > If you could compile with debugging and get be a stack trace from the > panic, that might help be track this down. Here is a trace without your patch KDB: enter: panic [thread pid 0 tid 0 ] Stoped at kdb_enter+0x2b: nop db> trace Tracing pid 0 tid 0 td 0xc0824dc0 kdb_enter(c07b7c59) at kdb_enter+0xb2 panic(c07bd294,c13b5c10,c0c20cfc,c059605d,c13b8c10) at panic+0xbb if_attach(c13b5c00,c13b5c00,c1380a00,c0c20d28,c05e93ed) at if_attach+0x33 ether_ifattach(c13b5c00,c12ba2ab,0,c0c20d40,c05e9c86) at ether_ifattach+0x19 ef_attach(c13b04d0) at ef_attach+0x5d ef_load(c0c20d74,c0572383,c12b6600,0,0) at ef_load+0x1ae if_ef_modevent(c16b6600,0,0,c08259c0,0) at if_ef_modeevent+0x19 module_redgister)init(c07fe220,c1ec00,c1e000,0,c0444065) at module_register_init+0x4b mi_startup() at mi_startup+0x96 begin() at begin+0x2c db> This was transcribed for the monitor behind me so I may have typoed an address along the way, but hopefully it's enough to point you down the right path, if you need more detail just let me know. I'm compiling with your patch now, but it may take a bit before i get back to you with answers on how it does, darn slow hardware.. > I'm assuming there's a path > through the code that I'm missing that results in using a bogus cast to > get an ifnet pointer and thus causes a panic. You might also try the > following patch which fixes a couple bugs I think are unrelated, but may > not be. > > -- Brooks > > Index: if_ef.c > =================================================================== > RCS file: /home/ncvs/src/sys/net/if_ef.c,v > retrieving revision 1.34 > diff -u -p -r1.34 if_ef.c > --- if_ef.c 10 Jun 2005 16:49:18 -0000 1.34 > +++ if_ef.c 26 Jul 2005 23:56:39 -0000 > @@ -477,7 +477,7 @@ ef_clone(struct ef_link *efl, int ft) > efp->ef_pifp = ifp; > efp->ef_frametype = ft; > eifp = efp->ef_ifp = if_alloc(IFT_ETHER); > - if (ifp == NULL) > + if (eifp == NULL) > return (ENOSPC); > snprintf(eifp->if_xname, IFNAMSIZ, > "%sf%d", ifp->if_xname, efp->ef_frametype); > @@ -536,8 +536,8 @@ ef_load(void) > SLIST_FOREACH(efl, &efdev, el_next) { > for (d = 0; d < EF_NFT; d++) > if (efl->el_units[d]) { > - if (efl->el_units[d]->ef_pifp != NULL) > - if_free(efl->el_units[d]->ef_pifp); > + if (efl->el_units[d]->ef_ifp != NULL) > + if_free(efl->el_units[d]->ef_ifp); > free(efl->el_units[d], M_IFADDR); > } > free(efl, M_IFADDR); -- Darcy Buskermolen Wavefire Technologies Corp. http://www.wavefire.com ph: 250.717.0200 fx: 250.763.1759
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508091348.05099.darcy>