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