2.4.36-stable kernel tree
リビジョン | abf857e7a1cbfd9a2d4e72d22bd6ac0f8a69d1b3 (tree) |
---|---|
日時 | 2006-11-02 10:28:40 |
作者 | Stephen Hemminger <shemminger@osdl...> |
コミッター | David S. Miller |
[BRIDGE]: netfilter deadlock
A deadlock was found in bridge netfilter code (2.4 only), when a
device is removed. The device removal path causes a BPDU to be
generated and ends up self deadlocking on the BR lock.
Simple fix would be to avoid generating config bpdu's immediately when
becoming root bridge, and just let the first hello timer tick do that.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
@@ -140,8 +140,8 @@ void br_become_root_bridge(struct net_bridge *br) | ||
140 | 140 | br->forward_delay = br->bridge_forward_delay; |
141 | 141 | br_topology_change_detection(br); |
142 | 142 | br_timer_clear(&br->tcn_timer); |
143 | - br_config_bpdu_generation(br); | |
144 | - br_timer_set(&br->hello_timer, jiffies); | |
143 | + | |
144 | + br_timer_set(&br->hello_timer, jiffies - br->hello_time); | |
145 | 145 | } |
146 | 146 | |
147 | 147 | /* called under bridge lock */ |