Subject: [PATCH 2.4] bridge netfilter deadlock

From: Stephen Hemminger <[email-masked]>
Date: Wed, 1 Nov 2006 11:45:50 -0800

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 <[email-masked]>

--- linux-2.4.33.3.orig/net/bridge/br_stp.c	2006-10-30 12:46:59.000000000 -0800
+++ linux-2.4.33.3/net/bridge/br_stp.c	2006-10-30 12:53:59.000000000 -0800
@@ -140,8 +140,8 @@
 	br->forward_delay = br->bridge_forward_delay;
 	br_topology_change_detection(br);
 	br_timer_clear(&br->tcn_timer);
-	br_config_bpdu_generation(br);
-	br_timer_set(&br->hello_timer, jiffies);
+
+	br_timer_set(&br->hello_timer, jiffies - br->hello_time);
 }
 
 /* called under bridge lock */

-- 
Stephen Hemminger <[email-masked]>