svn commit: r208212 - head/sys/net

John Baldwin jhb at freebsd.org
Mon May 17 20:06:18 UTC 2010


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


More information about the svn-src-all mailing list