tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Panic / wedge from bridging tap and vlan



jym%helkyn.org@localhost ("Jean-Yves Migeon (NetBSD)") writes:

>[373.4828972] bridge_input() at netbsd:bridge_input+0x9f1

That's acquiring the global locks (kernel + softnet) in vlan(4):

                        if (_ifp != NULL) {
                                m->m_flags &= ~M_PROMISC;
                                ACQUIRE_GLOBAL_LOCKS();
                                ether_input(_ifp, m);
                                RELEASE_GLOBAL_LOCKS();

>[373.4928971] vlan_input() at netbsd:vlan_input+0x143
>[373.5828969] ether_input() at netbsd:ether_input+0x4c2

>[373.5828969] bridge_input() at netbsd:bridge_input+0xa10

That's the same location calling into ether_input (after
having acquired the locks).

The locking loop happens, because vlan(4) injects the
(vlan-header stripped) packet back into the interface
where it again is intercepted by bridge_input.

I don't know why bridge(4) needs to take a lock here by itself.
Ideally the locks would be taken once for the whole input
processing.



Home | Main Index | Thread Index | Old Index