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