Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 07 Feb 2004 08:50:32 +0900
From:      SUZUKI Shinsuke <suz@kame.net>
To:        brooks@one-eyed-alien.net
Cc:        toasty@dragondata.com
Subject:   Re: vlan panic in -CURRENT
Message-ID:  <x7hdy3rcmv.wl%suz@crl.hitachi.co.jp>
In-Reply-To: <20040206183306.GA13801@Odin.AC.HMC.Edu>
References:  <356CD0A4-5828-11D8-A138-000A95A8A1F2@dragondata.com> <20040206183306.GA13801@Odin.AC.HMC.Edu>

next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> On Fri, 6 Feb 2004 10:33:06 -0800
>>>>> brooks@one-eyed-alien.net(Brooks Davis)  said:

> > This crashes -CURRENT (from a couple of days ago) for me:
> > ifconfig vlan0 create
> > ifconfig vlan0 vlan 2 vlandev fxp0
> > ifconfig vlan0 up
> > 
> > (immediate trap 12/page fault while in kernel mode crash)
> > 
> > BUT, if I manually bring up fxp0 first, everything is fine.
(snip)
> Well, it's not related to simply upping a vlan on a down interface since
> I can't reproduce it with fwe0.  I've got a shortage of systems
> configured for debugging that have an extra nic in them so I can't seem
> to replicate this.  Since it should be possiable to replicate in single
> user mode, you might try setting hw.physmem to something small enough
> that you can get a crashdump.

I can reproduce the problem, and here's the trace:
	  if_up->if_route->in6_if_up->in6_ifattach->in6_ifattach_link
	->in6_update_ifa->in6_addmulti->if_addmulti->vlan_ioctl
	->vlan_setmulti->if_delmulti->fxp_ioctl->fxp_mc_setup

The reason of this panic lies in if_fxp.c; fxp's
ethernet-multicast-filter is configured before the initializtion of
fxp driver.

The attached ad-hoc patch fixed the problem, but IMHO much further
considerataion is necessary; this happens when vlan is initialized
before the initialization of its physical interface, and there might
be a similar different bug (in other driver or in different situation).

So could anyone see to it?
#I'm afraid I cannot, because I'm not a device-driver expert...

Thanks,
----
SUZUKI, Shinsuke @ Hitachi / KAME Project


---------------------
Index: if_fxp.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/fxp/if_fxp.c,v
retrieving revision 1.198
diff -u -u -r1.198 if_fxp.c
--- if_fxp.c	28 Nov 2003 05:28:28 -0000	1.198
+++ if_fxp.c	6 Feb 2004 23:47:05 -0000
@@ -2578,6 +2578,8 @@
 		 */
 		txp = sc->fxp_desc.tx_last->tx_next;
 		txp->tx_mbuf = NULL;
+		if (txp->tx_cb == NULL)
+			return;	/* XXX? */
 		txp->tx_cb->cb_status = 0;
 		txp->tx_cb->cb_command = htole16(FXP_CB_COMMAND_NOP |
 		    FXP_CB_COMMAND_S | FXP_CB_COMMAND_I);



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