Skip site navigation (1)Skip section navigation (2)
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>