Date: Tue, 9 Aug 2005 11:16:01 -0700 From: Brooks Davis <brooks@one-eyed-alien.net> To: Darcy Buskermolen <darcy@wavefire.com> Cc: freebsd-net@freebsd.org Subject: Re: panic: if_attach called without if_alloc'd input() Message-ID: <20050809181601.GB20908@odin.ac.hmc.edu> In-Reply-To: <200508090854.21278.darcy@wavefire.com> References: <200508090854.21278.darcy@wavefire.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--LyciRD1jyfeSSjG0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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: >=20 > xl1f0: BUG: if_attach called without if_alloc'd input() >=20 > Where should I be looking to track this down? I suspect it has to do with= a=20 > 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. 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 =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 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 =3D ifp; efp->ef_frametype =3D ft; eifp =3D efp->ef_ifp =3D if_alloc(IFT_ETHER); - if (ifp =3D=3D NULL) + if (eifp =3D=3D 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 =3D 0; d < EF_NFT; d++) if (efl->el_units[d]) { - if (efl->el_units[d]->ef_pifp !=3D NULL) - if_free(efl->el_units[d]->ef_pifp); + if (efl->el_units[d]->ef_ifp !=3D NULL) + if_free(efl->el_units[d]->ef_ifp); free(efl->el_units[d], M_IFADDR); } free(efl, M_IFADDR); --=20 Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4 --LyciRD1jyfeSSjG0 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFC+PLhXY6L6fI4GtQRAta7AKCe/TGJoaouw/4aijvbCACn78SJ3gCePMuB 17xpkruirwfZsEHOwi6aQTw= =dVFL -----END PGP SIGNATURE----- --LyciRD1jyfeSSjG0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050809181601.GB20908>