Date: Mon, 17 May 2010 15:47:40 -0400 From: John Baldwin <jhb@freebsd.org> To: src-committers@freebsd.org Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r208212 - head/sys/net Message-ID: <201005171547.40705.jhb@freebsd.org> In-Reply-To: <201005171936.o4HJauI8018586@svn.freebsd.org> References: <201005171936.o4HJauI8018586@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 17 May 2010 3:36:56 pm John Baldwin wrote: > Author: jhb > Date: Mon May 17 19:36:56 2010 > New Revision: 208212 > URL: http://svn.freebsd.org/changeset/base/208212 > > Log: > Ignore failures from removing multicast addresses from the parent (trunk) > interface when tearing down a vlan interface. If a trunk interface is > detached, all of its multicast addresses are removed before the ifnet > departure eventhandlers are invoked. This means that all of the multicast > addresses are removed before the vlan interfaces are removed which causes > the if_delmulti() calls in the vlan teardown to fail. > > In the VLAN_ARRAY case, this left vlan interfaces referencing a no longer > valid parent interface. In the !VLAN_ARRAY case, the eventhandler gets > stuck in an infinite loop retrying vlan_unconfig_locked() forever. In > general the callers of vlan_unconfig_locked() do not expect nor handle > failure, so I believe it is safer to ignore the errors and tear down as > much of the vlan state as possible. The infinite loop is reproducible by doing something like: ifconfig cxgb0.100 create <.. configure cxgb0.100 ..> <.. listen for multicast on cxgb0.100 ..> kldunload if_cxgb.ko In 7 the infinite loop occurs under Giant which causes maximum fun as ptys for sshd need Giant still in 7. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005171547.40705.jhb>