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